patternjavascriptCritical
Detecting an undefined object property
Viewed 0 times
undefinedobjectpropertydetecting
Problem
How do I check if an object property in JavaScript is undefined?
Solution
The usual way to check if the value of a property is the special value
To check if an object does not actually have such a property, and will therefore return
To check if the value associated with an identifier is the special value
Note: this last method is the only way to refer to an undeclared identifier without an early error, which is different from having a value of
In versions of JavaScript prior to ECMAScript 5, the property named "undefined" on the global object was writeable, and therefore a simple check
However, in modern JavaScript, "undefined" is not a keyword, and so variables inside functions can be named "undefined" and shadow the global property.
If you are worried about this (unlikely) edge case, you can use the void operator to get at the special
undefined, is:if(o.myProperty === undefined) {
alert("myProperty value is the special value undefined");
}
To check if an object does not actually have such a property, and will therefore return
undefined by default when you try to access it:if(!o.hasOwnProperty('myProperty')) {
alert("myProperty does not exist");
}
To check if the value associated with an identifier is the special value
undefined, or if that identifier has not been declared:if(typeof myVariable === 'undefined') {
alert('myVariable is either the special value undefined, or it has not been declared');
}
Note: this last method is the only way to refer to an undeclared identifier without an early error, which is different from having a value of
undefined.In versions of JavaScript prior to ECMAScript 5, the property named "undefined" on the global object was writeable, and therefore a simple check
foo === undefined might behave unexpectedly if it had accidentally been redefined. In modern JavaScript, the property is read-only.However, in modern JavaScript, "undefined" is not a keyword, and so variables inside functions can be named "undefined" and shadow the global property.
If you are worried about this (unlikely) edge case, you can use the void operator to get at the special
undefined value itself:if(myVariable === void 0) {
alert("myVariable is the special value undefined");
}
Context
Stack Overflow Q#27509, score: 2957
Revisions (0)
No revisions yet.