JavaScript:测试未定义值的变量; 测试对象是否是数组

Foo*_*mus 4 javascript ecmascript-5

  1. 有没有之间的差异typeof value === "undefined"value === undefined

  2. 为什么Array.isArray()在ECMAScript 5中需要JavaScript ?我不能只是调用value instanceof Array来确定给定变量是否是一个数组?

Ray*_*nos 7

//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
Run Code Online (Sandbox Code Playgroud)

undefined = true有效也存在问题.但你并不真正关心这一点.undefined这些天来,没有人愚蠢地改变全球.

我也知道instanceof被打破的错误.我不能告诉你为什么Array.isArray更好的原因.

您将instanceofJavaScript Garden中找到批评

如果您阅读本文,它提到了如何instanceof跨单独的框架/窗口/ iframe工作.

因为instanceof检查againts Array并且每个窗口都有它自己的window.Array.