根据这个 MDN 页面,delete
关键字
仅当属性存在且无法删除时才返回 false。它在所有其他情况下返回 true。
但是,我看到了delete
返回的情况true
,尽管该属性没有被删除:
delete Window
delete alert
delete dir
delete console
delete 2
delete null
delete {}.x
...
事实上,几乎所有的属性都window
返回 true with delete
,通过在 中运行以下脚本可以看出about:blank
:
for(a in window) { if(delete window[a]) { console.log(a); } }
但是,大多数属性window
实际上并没有被删除。的返回值的真正含义是delete
什么?为什么它会返回true
它不删除的属性?
(注意:我会对解释 . 行为的 Chromium 代码的引用感兴趣delete
。)