Эта глобальная переменная содержит элементарное неопределенное значение - то, которое имеет переменная, значение которой не указано.
Например, функция без директивы return возвращает undefined.
function a() {
alert('test')
}
result = a() // result является undefined
alert(result === undefined) // true
Обращение к несуществующему свойству объекта также даст undefined.
result = window.notexists
alert(result === undefined) // true
Как видно из примеров, определить, является ли значение undefined, можно строгим (тройным) знаком равенства.
Например, можно проверить, существует ли глобальная переменная:
if (window.somevar !== undefined) { .... }
Обратите внимание - при сравнении идет обращение к свойству через заведомо существующий объект window. Поэтому интерпретатор не выдаст ошибку даже если свойства somevar не существует.
Также заметим, что нужен именно строгий оператор сравнения, т.к x==undefined возвратит true также если x является (null), а это уже другое значение.
Строгое сравнение является лучшей альтернативой использованию typeof:
Пример: проверка результата typeof
var x
//
if (typeof x == "undefined") {
...
}
Автор: vasya (не зарегистрирован), дата: 5 августа, 2009 - 12:34
#permalinkЗаметим, что нужен именно строгий оператор сравнения, т.к x==undefined верно также если x является null, а это уже другое значение.
КЭП?
Автор: Svetlana (не зарегистрирован), дата: 28 сентября, 2010 - 01:26
#permalinkНичего не поняла...
Простите я в этом чайник. Мне надо этот undefined убрать, а я не знаю как, боюсь все порушить.
Автор: SowingSadness (не зарегистрирован), дата: 25 ноября, 2010 - 11:13
#permalinkПравильнос делать так: (function( undefined ){ var x; if ( x === undefined ) { ... } })()Автор: Гость (не зарегистрирован), дата: 7 марта, 2011 - 10:36
#permalinkundefined это что?
Автор: Гость (не зарегистрирован), дата: 18 марта, 2011 - 08:15
#permalinkспасибо за сайт, добавлю себе в избранное =)
Автор: Гость (не зарегистрирован), дата: 5 мая, 2011 - 11:15
#permalinkКлассно, typeof мне никогда не нравился. Заменю на ===. Причем фишку с == тоже можно использовать, чтобы определить, что в переменной содержится хоть какое-то значение:
if (obj.Field === undefined || obj.Field == null)
меняется на
if (obj.Field == undefined)
Автор: Павел__ (не зарегистрирован), дата: 26 мая, 2011 - 17:24
#permalinkСтоило бы написать, что несуществующую переменную сравниванием с этой переменной проверять нельзя, потому что возникнет ошибка
Автор: neromont, дата: 20 января, 2015 - 06:30
#permalinkundefined можно использовать в качестве идентификатора, так как значение не является зарезервированным словом.
Автор: neromont, дата: 20 января, 2015 - 06:34
#permalinkТакже для проверки значения переменной на undefined можно проверить с помощью void: