Проверить, что переменная или свойство в JavaScript undefined

JavaScript, Вопросы и ответы
22 февраля 2012

Вопрос

Какой способ лучше использовать, чтобы убедиться, что какое-то свойство или переменная в JavaScript является undefined?


Ответ №1

Лучше всего сделать это так:

if (typeof something === "undefined") 
   alert("something undefined");

, где всесто something может быть не только переменная, а и свойство (например, something.prop).

Важно понимать. В JavaScript null является объектом. Для других переменных, которые не заданы, есть undefined. DOM возвращает null почти во всех случаях, когда не может найти какую-то структуру в документе, а undefined - это значение переменной, которая не определена.

Во-вторых, нет прямого соответствия между ними. Если Вы знаете, что переменная существует, и хотите проверить, является ли она null, сделайте так:

if (null === yourvar) //  (Надо знать, что переменная объявлена!)

Чтобы проверить, задана ли переменная, сделайте так:

if (typeof yourvar != 'undefined') // Любая область
if (window['varname'] != undefined) // Глобальная область видимости
if (window['varname'] != void 0) // Для старых браузеров

Если Вы знаете, что переменная была объявлена (через var), но хотите проверить, присвоено ли ей значение, сделайте так:

if (undefined != yourvar) // (Надо знать, что переменная объявлена!)
if (void 0 != yourvar) // для старых браузеров

Если Вы хотите проверить, что у какого-то объекта присутствует свойство, независимо от того, было ли оно задано или нет:

if ('membername' in objectname) // С наследованием
if (objectname.hasOwnProperty('membername')) // Без наследования

Проверить, вернёт ли переменная true:

if(variablename)

З.Ы.

var TestVar = null;
alert(TestVar); // покажет null
alert(typeof TestVar); // покажет object

1 комментарий

Добавить комментарий


(обязательно)