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 можно использовать в качестве идентификатора, так как значение не является зарезервированным словом.


Автор: Полезные (не зарегистрирован), дата: 31 октября, 2023 - 10:58
#permalink

Thanks for your answer. You can visit geometry dash online to test your agilty.


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

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

x === void 0;

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 01:22
#permalink

Автор: oralie (не зарегистрирован), дата: 23 ноября, 2022 - 12:33
#permalink

It is a good idea to check slime rancher 2 advancedwriters reviews before making a purchase on the company's website. A plethora of knowledge on how to use the service was offered by this review.


Автор: AhmedMalik (не зарегистрирован), дата: 26 января, 2023 - 23:53
#permalink

Cooperate with opponents buffet las vegas near me to have a strategy to overcome difficulties


Автор: LOL BEANS (не зарегистрирован), дата: 27 февраля, 2023 - 06:34
#permalink

I have bookmarked this site and will refer to it many times in the future. lol beans


Автор: singlegel (не зарегистрирован), дата: 17 августа, 2023 - 07:37
#permalink

Я очень ценю информацию, которую вы предоставили, и я думаю, что вы проделали отличную работу. free games спасибо


Автор: Гость (не зарегистрирован), дата: 12 сентября, 2024 - 03:32
#permalink

Welcome to Monkey Mart:

Comments are welcome:
Useful ones.
Those that add to the reading.
Questions related to the content to aid others' understanding.
Other queries may be removed.
For other discussions, please use the forum.
P.S. The best "thank you" is not just praise, but a recommendation or link to the article.


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

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
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
Антиспам
8 + 0 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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