Неопределенные значения

В JScript можно объявлять переменные, не присваивая им значения. При объявлении типа переменной подразумевается, что она принимает значение, определенное по умолчанию для этого типа. Например, значением по умолчанию для числового типа является ноль, а значением по умолчанию для типа данных String является пустая строка. Однако если в объявлении не указывается тип данных, начальное значение переменной равно undefined и для ее типа данных устанавливается значение undefined. Аналогичным образом, код, обращающийся к свойству объекта "expando" или элементу массива, который не существует, возвращает значение undefined.

Использование неопределенных значений

Чтобы определить, существует ли переменная или свойство объекта, сравните этот элемент с ключевым словом undefined (данный метод можно применить только для объявленной переменной или свойства) или проверьте, установлено ли для его типа значение "undefined" (данный метод применим даже для необъявленной переменной или свойства). В следующем примере кода предполагается, что программист пытается проверить, объявлена ли переменная x.

// One method to test if an identifier (x) is undefined.
// This will always work, even if x has not been declared.
if (typeof(x) == "undefined"){
   // Do something.
}
// Another method to test if an identifier (x) is undefined.
// This gives a compile-time error if x is not declared.
if (x == undefined){
   // Do something.
}

Другой способ проверить, определена ли переменная или свойство, состоит в сравнении ее значения со значением null. Переменная, которая содержит null, не содержит "никакого значения" или "никакого объекта". Другими словами она не содержит допустимого числа, строки, логического значения, массива или объекта. Можно стереть содержимое переменной (не удаляя переменную), присваивая ей значение null. Обратите внимание, что при сравнении значений undefined и null с помощью оператора равенства (==) возвращается значение "true".

Примечание

При сравнении значения null с числом 0 с помощью оператора равенства в JScript возвращается отрицательный результат.Подобное поведения отличается от других языков, таких как C и C++.

В данном примере проверяется объект obj, чтобы проверить, содержит ли он свойство prop.

// A third method to test if an identifier (obj.prop) is undefined.
if (obj.prop == null){
   // Do something.
}

Эта операция сравнения возвращает значение true,

  • если свойство obj.prop содержит значение null;

  • если свойство obj.prop не существует.

Имеется и другой способ проверки существования свойства объекта. Оператор in возвращает значение true, если указанное свойство содержится в предоставленном объекте. Например, следующий код возвращает true, если свойство prop содержится в объекте obj.

if ("prop" in someObject)
// someObject has the property 'prop'

Чтобы удалить свойство из объекта, используйте оператор delete.

См. также

Ссылки

Литерал null

Свойство undefined

Оператор in

Оператор delete

Другие ресурсы

Переменные и константы в JScript

Данные в языке JScript

Типы данных в JScript

Типы данных (Visual Studio — JScript)