Тут надо понимать, что в локальной области видимости функций
plus1 и
square x это значение преданного аргумента, а не глобальной переменной
x.
var x = 2, y = 3;
function plus1(x) {
return x + 1; // тут x это значение которое вы передали при вызове аргументом
}
plus1(y)
var square = function(x) {
return x * x; // тут тоже
};
square(plus1(y))
Разберем выражение:
square(plus1(y))
У вас y = 3.
Получается:
square(plus1(3));
На шаге plus1(3):
function plus1(3) {
return 3 + 1;
}
На выходе из первой функции получаем
4
Получается:
square(4);
на этом шаге поисходит следущее:
function(4) {
return 4 * 4;
};
На выходе получаем
16