Как работает назначение параметра переменной с тем же именем в javascript?

Почему следующий код не предупреждает undefined?

function test(param){ 
     var param =  param;
     alert(param);
 } 
test("SO"); // alerts SO

Как этот параметр, который присваивается локальной переменной, сопоставляется с аргументом функции, а не с самой локальной переменной?
Имеют ли правильные значения "совпадающие предпочтения" для аргументов функции или в чем причина?

1 ответ

Решение

Есть две части в

var param =  param;

Первый - это объявление var:

var param;

Второе - это задание:

param = param;

Объявление var ничего не делает, так как переменная уже существует (область видимости переменной - весь вызов функции). И присвоение ничего не делает, так как оно сохраняет то же значение.

Вы можете проверить это, назначив другое значение:

function test(param){ 
     console.log('1', param) // logs "SO"
     var param =  param+"4";
     console.log('2', param) // logs "SO4"
} 
test("SO");
Другие вопросы по тегам