Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2017, 20:09
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

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

Последний раз редактировалось vitek-82, 29.08.2017 в 20:19.
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2017, 20:20
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

С "bonus" все впорядке.
Замыкания тут вообще нет.
Возможно тебе не до конца понятна механика поднятия переменных в JS.
Так же возможно let тебе поможет.
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2017, 20:42
Аспирант
Отправить личное сообщение для vitek-82 Посмотреть профиль Найти все сообщения от vitek-82
 
Регистрация: 18.03.2017
Сообщений: 30

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
	};
};


А я сломал голову! Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2017, 08:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от vitek-82
что не так с "bonus"?
Он объявлен как приватная переменная...
Сообщение от vitek-82
var bonus = 100;
В строке 09...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax обработчик не пойму в чем проблема??? lodem009 Элементы интерфейса 4 17.02.2014 22:03
в чем проблема? xxx Общие вопросы Javascript 2 25.12.2013 20:32
Помогите советом, в чем может быть проблема? prope Общие вопросы Javascript 6 14.12.2013 23:44
в чем проблема? bastar jQuery 3 20.09.2013 16:44
Проблема загрузки в ИЕ Sergej AJAX и COMET 0 11.04.2011 09:29