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