【发布时间】:2026-02-20 23:45:01
【问题描述】:
本教程在here 上声明
"如果使用 delete 运算符删除属性,则 in 运算符 为该属性返回 false。”
以下是他们为此陈述的示例之一:
var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
delete trees[3];
3 in trees; // returns false
但是,我的问题是,在删除树[3] 之前,Object.getOwnPropertyNames(trees) 返回["0", "1", "2", "3", "4", "length"],但删除后返回["0", "1", "2", "4", "length"]。为什么会这样?我知道如果你删除一个属性,那么它就不会存在,但在这种情况下,属性也是数组的索引。这种奇怪的行为有什么好的解释吗?
【问题讨论】:
标签: javascript arrays ecmascript-6 in-operator