@TrainHard

Почему выводится число, а не undefined?

Всем привет!
Объясните, плиз.
function num(i) {
  
  var i = i;
  console.log(i);

}
num(3);


Почему в этом примере выводится 3, а не undefined?
Не могу понять как интерпретатор разбирает такой код - в какой последовательности?
  • Вопрос задан
  • 244 просмотра
Решения вопроса 2
Может быть этот материал разъяснит эту ситуацию
для каждой переменной (var)

– создаётся свойство VO с именем переменной, и значением undefined; если в VO уже присутствовало свойство с таким именем, оно остаётся нетронутым.
Ответ написан
Комментировать
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
В данном примере код аналогичен чему-то подобному:

var i = 3;
var i = i; 
console.log(i); //3


Аргументы функции - обычные переменные, которые объявляются перед ее выполнением в ее же области видимости и приравниваются тому, что задумано.

Вы же создаете одноименную переменную в этой самой области видимости и приравниваете существующей. Но интерпретатор не дурак, он просто не обращает внимания на var и меняет значение существующей переменной на....то, что она сейчас и имеет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Так откуда же возьмется undefined?
Ведь ваш код принципиально ничем не отличается от такого:
var foo = i;
console.log(foo);

Код в большинстве ЯП разбирается справа налево. Локальная переменная и аргумент - две разных области памяти, поэтому одна не затирает другую.
Ответ написан
Ваш ответ на вопрос

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

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