Объясните в чем проблема! замыкание
// "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, время: 22:00. |