Ответ 1
Это довольно странно. Как насчет:
if (window['x']) {
// It defined
}
Означает ли это выше? Кроме того, что такое интерпретатор браузера или JavaScript?
Это странность, которую я иногда видел в JS - возможно, кто-то может пролить свет на нее.
Я выполняю тест для undefined для переменной:
if (x !== 'undefined'){}
или даже
if (typeof x !== 'undefined'){}
И браузер все равно выдает сообщение об ошибке:
ReferenceError: x is not defined
Даже
if (x) {}
выдает ошибку.
Это глобальная переменная уровня структуры, которую я проверяю, поэтому, возможно, что-то делать с разными областями. (Нет критических анализов глобальных переменных - опять же, это наличие рамки, которую я тестирую).
Это довольно странно. Как насчет:
if (window['x']) {
// It defined
}
Означает ли это выше? Кроме того, что такое интерпретатор браузера или JavaScript?
@Anurag прав, второе условие не должно быть связано с ошибкой.
if (typeof x !== 'undefined'){// won't through error even if x is not declared
}
Я думаю, проблема в том, что x не объявляется как переменная. Если вы объявите его, но оставьте его неназначенным, он рассматривается как undefined и не будет проходить через ошибку, в вашем случае он не будет объявлен.
var x;
if (x !== undefined){// won't through error
}
Поля объектов обрабатываются по-разному
if(window.x !== undefined){// won't through error
}
кажется, что x в этом случае объявляется во время выполнения, если не найден, поэтому возвращает undefined
Надеюсь, это поможет!
Ваша проблема в том, что undefined !== 'undefined'