Объясните в чем проблема! замыкание
// "use strict"
var base = 1000;
var bonus = 1;
function getSalary(x) {
console.log(base); // 1000
console.log(bonus); // undefined - почему не "1", если как и в случае с "base", "bonus" должен вытягиваться из замыкания???
if(x){
var bonus = 100;
return base + bonus;
}
else{
return base + bonus;
};
};
console.log(getSalary(false)); // NAN
что не так с "bonus"? |
С "bonus" все впорядке.
Замыкания тут вообще нет. Возможно тебе не до конца понятна механика поднятия переменных в JS. Так же возможно let тебе поможет. |
MallSerg, спасибо, давно читал! Забыл уже! Поднятие, все верно) Ниже то как javascript выполняет код!
var base = 1000;
var bonus = 1;
function getSalary(x) {
var bonus;
console.log(bonus); // undefined - естественно!!!
if(x){
alert('true');
bonus = 100;
return base + bonus;
}
else{
alert('false');
return base + bonus; // 1000 + undefined => NAN
};
};
А я сломал голову! Спасибо! |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 14:16. |