In JScript, you can declare a variable without assigning a value to it. A type-annotated variable assumes the default value for that type. For example, the default value for a numeric type is zero, and the default for the String data type is the empty string. However, a variable without a specified data type has an initial value of undefined and a data type of undefined. Likewise, code that accesses an expando object property or an array element that does not exist returns a value of undefined.
Using Undefined Values
To determine if a variable or object property exists, compare it to the keyword undefined (which will work only for a declared variable or property), or check if its type is "undefined" (which will work even for an undeclared variable or property). In the following code example, assume that the programmer is trying to test if the variable x
has been declared:
В | Copy Code |
---|---|
// 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. } |
Another way to check if a variable or object property is undefined is to compare the value to null. A variable that contains null contains "no value" or "no object." In other words, it holds no valid number, string, Boolean, array, or object. You can erase the contents of a variable (without deleting the variable) by assigning it the null value. Note that the value undefined and null compare as equal using the equality (==) operator.
Note |
---|
In JScript, null does not compare as equal to 0 using the equality operator. This behavior is different from other languages, such as C and C++. |
In this example, the object obj
is tested to see if it has the property prop
.
В | Copy Code |
---|---|
// A third method to test if an identifier (obj.prop) is undefined. if (obj.prop == null){ // Do something. } |
This comparison is true
-
if the property
obj.prop
contains the value null -
if the property
obj.prop
does not exist
There is another way to check if an object property exists. The in operator returns true if the specified property is in the provided object. For example, the following code tests true if the property prop
is in the object obj
.
В | Copy Code |
---|---|
if ("prop" in someObject) // someObject has the property 'prop' |
To remove a property from an object, use the delete operator.