Почему в этой операции javascript выводится 16?

Здравствуйте, я зеленющий новичок в javascript, начал читать книгу Дэвида Флэнагана (специально купил за 840 руб.), но никак не могу понять почему в этой операции выводится 16 ? Похоже не понимаю логику javascript.

var x = 2, y = 3;
function plus1(x) {
return x+1;
}
plus1(y)
var square = function(x) {
return x*x;
};
square(plus1(y))


В этой конструкции тоже получается 16, хотя в var поменял буквы на a и b
var a = 2, b = 3;
function plus1(x) {
return x+1;
}
plus1(y)
var square = function(x) {
return x*x;
};
square(plus1(y))
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Тут надо понимать, что в локальной области видимости функций 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
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vaajnur
битриксоид
в 1-м примере все просто, надо просто понять как работают функции в Js. Используй дебаггер, чтобы наглядно изучить работу js интерпретатора.

Во 2-м у тебя никакого рез-та не будет, т.к. переменные y, x не определены.
Ответ написан
@nluparev
не понимаю как у Вас во 2-ом примере работает. Там не идентификатора y для call expression plus1(y)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы