Параметры функциональной переменной
После дистилляции ответов на Как обрабатываются параметры при передаче функций в Javascript? Я закончил с одним вопросом, который мне нужно уточнить.
В приведенном ниже примере:
function plus2(x) { return x+2; }
var Q = function(y) { return plus2(y); }
alert(Q(10));
Почему вызов Q
с аргументом 10 приводит к y
получить значение 10?
2 ответа
Решение
Замена анонимной функции на именованную функцию дала мне немного больше ясности:
function plus2(x) { return x+2; }
function dummy(y) { return plus2(y); }
var Q = dummy;
alert(Q(10));
Q
затем становится своего рода псевдонимом для dummy
,
function plus2(x) { return x+2; }
var Q = function(y) { return plus2(y); }
alert(Q(10));
Буду предупреждать 12. y
равно 10, поскольку это значение 10, которое передается в качестве аргумента, а затем присваивается параметру функции y
, эквивалент
var y = 10; // call of Q
var x = y; call of plus2 in Q
x = x + 2;
y = x; // return of plus2
alert y; // return of Q