我真的很困惑。如果我做这样的事情:
[1].slice(1)
它返回一个空数组(在chrome交互式控制台中)。但如果我比较:
[1].slice(1) === []
它总是错误的。所以我的问题是,[1] .slice(1)真正回归了什么?
答案 0 :(得分:8)
===
按引用比较对象
您正在比较两个不同的数组对象,它们都是空的。
如果要检查数组是否为空,请检查.length === 0
。
答案 1 :(得分:1)
这不是slice
或===
的问题。
如果您执行[1]==[1]
,则会返回false
。
这是因为==
和===
都通过引用来比较对象
答案 2 :(得分:-1)
[] === []
也会返回false。 [1].slice(1)
确实会返回[]
答案 3 :(得分:-1)
你最好检查长度:
[1].slice(1).length; // falsey