为什么'for循环中没有'undefined`出现?

时间:2012-08-27 16:40:20

标签: javascript properties

我对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

1 个答案:

答案 0 :(得分:7)

这不是一个可枚举的财产。在现代JavaScript引擎中,您可以在自己的对象中控制它,但几乎总是如此(可能并非在每个解释器中)“本机”对象可以“隐藏”for ... in迭代中的属性。 / p>

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