2016-03-13 2 views
1

Зачем вам нужно использовать ключевое слово var при определении переменной с использованием оценки короткого замыкания?Использование оценки короткого замыкания для определения переменной

Это работает ...

var sum=sum||5; 
console.log(sum); //shows 5; 

Это не работает ...

sum=sum||5; 
console.log(sum); //error sum is not defined; 

Не следует ли второй пример просто сделать сумму === 5, но в глобальном масштабе и не местный?

ответ

1

Что происходит внутри, когда вы делаете var sum=sum||5; это:

  • переменная sum определена, она создается,
  • переменная sum присваивается undefined значение
  • переменная sum присваивается результат из sum || 5, что является выражением undefined || 5, что составляет 5

Когда вы просто делаете sum = sum||5, первый и второй шаги сверху не выполняются, поэтому на третьем шаге вы замыкаете то, что не существует на всех со значением 5, и именно поэтому вы получаете эту ошибку.

Чтобы это понять, сделайте следующее: Откройте консоль своего браузера и просто напишите sum. Вы получите сообщение об ошибке, потому что sum не существует. Теперь сделаем sum = ''. Здесь произошло изменение/sum, , как если бы вы сделали var sum, он существует, и ему было присвоено значение ''.

Суть выше, что вы должны понимать, что есть разница между короткого замыкания значение undefined со значением 5 и закорачивания то, что не существует со значением 5

Смежные вопросы