Установите этот флажок интерактивный Google Chrome журнала консоли:Ошибка Javascript при использовании неопределенной переменной
test_1 = 'ok'
> "ok"
test_2 = test_2 || 'ok'
> ReferenceError: test_2 is not defined
var test_3 = test_3 || 'ok'
> undefined
test_1
> "ok"
test_2
> ReferenceError: test_2 is not defined
test_3
> "ok"
Когда я называю test_1 = 'ok'
я оставляю вне var
конструктор, но браузер все-таки это понимает. Я предполагаю, что он заполняется var
, где я пропустил, точно так же, как он заполняется точкой с запятой.
Но для test_2 = test_2 || 'ok'
У меня есть ошибка. Я знаю, что test_2
не определен, но он не поддерживает мой следующий пример test_3
от работы. По какой-то причине недостающее заявление var
становится проблемой.
Может кто-нибудь объяснить мне, почему интерпретатор выдает сообщение об ошибке?
[JavaScript 'hoisting'] (http://stackoverflow.com/questions/15311158/javascript-hoisting) также посмотреть [JavaScript Scoping and Histing] (http://www.adequatelygood.com/JavaScript-Scoping- and-Hoisting.html) – Givi
Вы можете опустить 'var', это означает, что ваша переменная является глобальной. – elclanrs
Я не понимаю, почему вы это делаете. – bgusach