Javascript IF条件"array === []"和"array.length === 0"

teo*_*wey 0 javascript arrays

我是JS的初学者.我正在编写一个接收输入数组的方法,需要检查它是否为空.我的第一种方法是array === []在方法内部的if语句中使用作为条件,但它不起作用.它在我写条件时起作用array.length === 0.我以为他们有同样的意思.有人能解释为什么前者不起作用吗?提前致谢.

Poi*_*nty 8

比较

if (array === [])
Run Code Online (Sandbox Code Playgroud)

比较两个对象的身份.一个对象永远不等于(相同)另一个不同的对象,至少在JavaScript中定义"相等"的意义上.JavaScript中的对象比较总是只是一个测试,以查看某个表达式是否引用某个特定的已知对象.比较不会"查看"比较对象.

一个可能不明显的细节是表达式[]不是对某些全局概念"空数组"的引用; 这是一个创建一个全新的空数组的请求.因此,比较也是如此

if ([] === [])
Run Code Online (Sandbox Code Playgroud)

将是错误的,因为在===运算符的两侧创建了一个新的,不同的数组.