我使用
1 in [1]; // ===> true
但是
const node = document.body.querySelector("div");
node in [node]; //===> false
有人能帮我理解吗
1 in [1]; // ===> true
否,计算结果为false
。这里有一个演示:
console.log(1 in [1]);
如果转换为字符串的左侧作为属性名称存在于右侧,则in
运算符将计算为true。您的数组具有值为1
的属性'0'
(以及从Array
原型继承的其他一些属性,如length
和indexOf
(。
in
运算符不检查左侧的值是否在右侧的数组中作为的值存在。为此,您需要includes
方法。
console.log([1].includes(1));
const node = document.body.querySelector("div");
console.log([node].includes(node));
<div>...</div>