2014-01-18 1 views
1

Мне интересно это странное поведение хрома из его последнего обновления. Когда я хочу, чтобы проверить, если переменная определена он выдает неперехваченную ошибку, как показано ниже:Хром странное поведение при проверке определения: ReferenceError: x не определен

if(x) { alert('x is defined.'); } 

И эта линия бросает:

ReferenceError: x is not defined 

Я знаю, как справиться с этим, но из моего предыдущего опыта это должно return undefined не выбрасывает исключение в моем приложении. Почему это происходит? Я думаю, он должен проверить, является ли x свойством объекта окна или нет. Заранее спасибо.

+0

Похоже, вы используете 'x' где-либо еще без его инициализации. – monners

ответ

3

Существует разница между не объявляемой переменной и объявленной переменной, но имеющей неопределенное значение. Предупреждение появляется только тогда, когда вы пытаетесь получить доступ к переменной, которая не была объявлена. Вы всегда должны объявлять свои переменные, даже если вы не инициализируете их, например.

var x; 
if (x) { 
    alert('x is defined'); 
} 

DEMO

+0

Я думал, что он должен искать объект как свойство объекта окна. Я знаю, что ты говоришь. –

+0

Я имею в виду, что он должен интерпретировать строку как «if (window.x) {} ' –

+0

Если вы хотите, чтобы она ее интерпретировала, напишите это. Я думаю, Google пытается помочь в обнаружении опечаток имен переменных. – Barmar

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