Veneomin
@Veneomin

Почему изменяется внешняя переменная?

Почему в этом случае выводит 5:
https://jsfiddle.net/epno6bne/
var a = 5;
function test(a){
    a ++;
}
test(a)
alert(a)

А в этом 6:
https://jsfiddle.net/a9x2xq0f/
var a = {b:5};
function test(a){
    a.b ++;
}
test(a)
alert(a.b)
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
@sh84
В js функциях параметры простого типа, в данном случае число, передаются по значению, т.е. копируются.
Объекты же передаются по ссылке, т.е. внутри функции тот же объект что снаружи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
paradokso
@paradokso
Начинающий фронт-эндер
в первом случае функция у тебя возвращает ничего, т.е. 5 не инкреминируется. В самой функции авозрос, но он не передался дальше.

Во втором случае функцией ты увеличиваешь значение объекта, которое уже передалось, даже без ретурна.
Ответ написан
Комментировать
petyagrill
@petyagrill
Почему не скажу,
но так работает:

var a = 5;
function test(a){
    a ++; 
    return a;
}
a = test(a);
alert(a);


Делайте выводы

Второй вариант переписывает значение переменной, по этому ему не нужно возвращать результат
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 03:11
500 руб./за проект
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект