Если a
не определено, это работает:
if(window.a) {}
в то время как это бросает ошибку:
if(a)
Кто-то может объяснить почему?
window.a
- это свойство window
, и оно undefined . a
- переменная, и она необъявленная .
Чтобы использовать переменную, вы должны сначала объявить ее с помощью оператора var
. Поскольку вы не объявили a
, интерпретатор выдает ошибку. Чтобы использовать свойства объекта, не требуется явного объявления. Крокфорд пишет в The Good Parts :
Если вы попытаетесь извлечь значение из объекта, и если у объекта нет члена с таким именем, Вместо этого он возвращает неопределенное значение.