Javascript.RU

undefined

Обозначает неопределенное значение

Описание, примеры

Эта глобальная переменная содержит элементарное неопределенное значение - то, которое имеет переменная, значение которой не указано.

Например, функция без директивы 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, а это уже другое значение.

var test = null;
alert(test === undefined); // false

КЭП?


Автор: Илья Кантор, дата: 5 августа, 2009 - 14:48
#permalink

Вопрос непонятен.. Там пример именно с typeof дан в конце статьи.


Автор: Crusader (не зарегистрирован), дата: 19 августа, 2010 - 15:47
#permalink

строгий оператор сравнения null === undefined - false
обычное сравнение null == undefined - true!
Что не понятного?


Автор: Илья Кантор, дата: 20 августа, 2010 - 14:44
#permalink

В общем, если в статье что-то неверно или непонятно - напишите Как я понял - в статье все ок


Автор: Гость (не зарегистрирован), дата: 16 августа, 2011 - 11:23
#permalink

с this вообще не понимаю ничего. уже неделю разбираюсь. Дайте пример, чтоб запустить и все понять


Автор: melky, дата: 16 августа, 2011 - 19:34
#permalink
a =  function(){ alert( [this.constructor, this, typeof this].join("\n")) };

obj = {};
a.call(obj); // this ссылается на obj

arr = [];
a.call(arr); // this ссылается на arr

a.call(window); // this ссылается на window
a(); // и так тоже.

Автор: cZerro (не зарегистрирован), дата: 6 октября, 2011 - 12:29
#permalink

Так ведь объект test определён - он равен null. Поэтому строгое сравнение с undefined и дает false. Вот если бы без первой строчки...


Автор: Svetlana (не зарегистрирован), дата: 28 сентября, 2010 - 01:26
#permalink

Ничего не поняла...
Простите я в этом чайник. Мне надо этот undefined убрать, а я не знаю как, боюсь все порушить.


Автор: Гость (не зарегистрирован), дата: 28 октября, 2010 - 22:45
#permalink

function test(a){
if (a===undefined) alert('a is not defined');
}
test();


Автор: SowingSadness (не зарегистрирован), дата: 25 ноября, 2010 - 11:13
#permalink
Правильнос делать так:
(function( undefined ){
 var x;
 if ( x === undefined ) {
  ...
 }

})()

Автор: Гость (не зарегистрирован), дата: 7 марта, 2011 - 10:36
#permalink

undefined это что?


Автор: melky, дата: 16 августа, 2011 - 19:35
#permalink

значит "значение не присвоено"


Автор: Гость (не зарегистрирован), дата: 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

Стоило бы написать, что несуществующую переменную сравниванием с этой переменной проверять нельзя, потому что возникнет ошибка

alert(typeof(myVar) == 'undefined'); // -> True
alert(myVar === undefined); // -> JS Error: "myVar is not defined"

Автор: Богдан (не зарегистрирован), дата: 2 июля, 2011 - 20:07
#permalink

Илья, просьба замечание Петра внести в статью, так как оно очень важное. Спасибо!


Автор: melky, дата: 16 августа, 2011 - 19:36
#permalink

не вижу ничего важного. Это основа, которую обязан знать каждый.


Автор: devote, дата: 22 августа, 2011 - 02:42
#permalink

Ну тогда можно все статьи снести что кажутся основой... Этож должен знать каждый... melky, ты глупость сказал


Автор: neromont, дата: 20 января, 2015 - 06:30
#permalink

undefined можно использовать в качестве идентификатора, так как значение не является зарезервированным словом.


Автор: neromont, дата: 20 января, 2015 - 06:34
#permalink

Также для проверки значения переменной на undefined можно проверить с помощью void:

x === void 0;

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
6 + 2 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum