JavaScript: Testing variables for undefined value; testing whether object is array
Is there a difference between
typeof value === "undefined开发者_高级运维"
andvalue === undefined
?Why did JavaScript need
Array.isArray()
in ECMAScript 5? Can't I just callvalue instanceof Array
to determine whether an given variable is an array?
//var value; There is no var declaration. The variable was never declared
// check againts undeclared variables
typeof value === "undefined"; // works
// check againts declared variables with no value
value === undefined; // ReferenceError: value is not defined
There are also issues with undefined = true
being valid. But you don't really care about that. No-one is stupid enough to alter undefined
globally these days.
I also know of bugs with instanceof
being broken. I can't give you the exact reason why Array.isArray
is better though.
You will find criticism on instanceof
in the JavaScript Garden
If you read this Article It mentions how instanceof
does not work across seperate frames / windows / iframes.
Because instanceof checks againts Array
and each window has it's own window.Array
.
精彩评论