我对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
?
答案 0 :(得分:7)
这不是一个可枚举的财产。在现代JavaScript引擎中,您可以在自己的对象中控制它,但几乎总是如此(可能并非在每个解释器中)“本机”对象可以“隐藏”for ... in
迭代中的属性。 / p>
您可以在MDN阅读Object.defineProperty()
。我不确定是否会有一种语法(在Harmony中)将属性标记为对象文字中的不可枚举。