Как работает назначение параметра переменной с тем же именем в 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");