4

我对for-in循环有点困惑:

window.hasOwnProperty(undefined) // Returns true

undefined in window // Returns true

但以下内容打印Undefined is in window!

for(a in window) {
     if(a === 'undefined')
         console.log('Undefined is in window!');
}

为什么没有undefined出现在for-in循环中?

4

1 回答 1

7

它不是可枚举的属性。在现代 JavaScript 引擎中,您可以在自己的对象中控制它,但几乎总是这样(可能不是在每个解释器中)“原生”对象可以从for ... in迭代中“隐藏”属性。

Object.defineProperty()你可以在MDN上阅读。我不确定是否会有语法(在 Harmony 中)用于在对象文字中将属性标记为不可枚举。

于 2012-08-27T16:41:13.707 回答