Параметры функциональной переменной

После дистилляции ответов на Как обрабатываются параметры при передаче функций в 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
Другие вопросы по тегам