我对 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
循环中?
最佳答案
它不是可枚举的属性。在现代 JavaScript 引擎中,您可以在自己的对象中控制它,但几乎总是这样(也许不是在每个解释器中)“ native ”对象可以从 for ... in 中“隐藏”属性
迭代。
您可以在 MDN 阅读有关 Object.defineProperty()
的信息.我不确定是否会有语法(在 Harmony 中)用于在对象文字中将属性标记为不可枚举。
关于javascript - 为什么 `undefined` 没有出现在 for...in 循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146013/