我是JS的初学者.我正在编写一个接收输入数组的方法,需要检查它是否为空.我的第一种方法是array === []在方法内部的if语句中使用作为条件,但它不起作用.它在我写条件时起作用array.length === 0.我以为他们有同样的意思.有人能解释为什么前者不起作用吗?提前致谢.
比较
if (array === [])
Run Code Online (Sandbox Code Playgroud)
比较两个对象的身份.一个对象永远不等于(相同)另一个不同的对象,至少在JavaScript中定义"相等"的意义上.JavaScript中的对象比较总是只是一个测试,以查看某个表达式是否引用某个特定的已知对象.比较不会"查看"比较对象.
一个可能不明显的细节是表达式[]不是对某些全局概念"空数组"的引用; 这是一个创建一个全新的空数组的请求.因此,比较也是如此
if ([] === [])
Run Code Online (Sandbox Code Playgroud)
将是错误的,因为在===运算符的两侧创建了一个新的,不同的数组.