Эта глобальная переменная содержит элементарное неопределенное значение - то, которое имеет переменная, значение которой не указано.
Например, функция без директивы 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") {
...
}
Заметим, что нужен именно строгий оператор сравнения, т.к x==undefined верно также если x является null, а это уже другое значение.
КЭП?
Вопрос непонятен.. Там пример именно с typeof дан в конце статьи.
строгий оператор сравнения null === undefined - false
обычное сравнение null == undefined - true!
Что не понятного?
В общем, если в статье что-то неверно или непонятно - напишите Как я понял - в статье все ок
с this вообще не понимаю ничего. уже неделю разбираюсь. Дайте пример, чтоб запустить и все понять
Так ведь объект test определён - он равен null. Поэтому строгое сравнение с undefined и дает false. Вот если бы без первой строчки...
Ничего не поняла...
Простите я в этом чайник. Мне надо этот undefined убрать, а я не знаю как, боюсь все порушить.
undefined это что?
значит "значение не присвоено"
спасибо за сайт, добавлю себе в избранное =)
Классно, typeof мне никогда не нравился. Заменю на ===. Причем фишку с == тоже можно использовать, чтобы определить, что в переменной содержится хоть какое-то значение:
if (obj.Field === undefined || obj.Field == null)
меняется на
if (obj.Field == undefined)
Стоило бы написать, что несуществующую переменную сравниванием с этой переменной проверять нельзя, потому что возникнет ошибка
Илья, просьба замечание Петра внести в статью, так как оно очень важное. Спасибо!
не вижу ничего важного. Это основа, которую обязан знать каждый.
Ну тогда можно все статьи снести что кажутся основой... Этож должен знать каждый... melky, ты глупость сказал
undefined можно использовать в качестве идентификатора, так как значение не является зарезервированным словом.
Также для проверки значения переменной на undefined можно проверить с помощью void: