在 javascript 中对 dom node 使用'in'语句时返回 false



我使用

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原型继承的其他一些属性,如lengthindexOf(。

in运算符不检查左侧的是否在右侧的数组中作为的值存在。为此,您需要includes方法。

console.log([1].includes(1));
const node = document.body.querySelector("div"); 
console.log([node].includes(node));
<div>...</div>

最新更新