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

标签 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 循环中?

最佳答案

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

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

关于javascript - 为什么 `undefined` 没有出现在 for...in 循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146013/

相关文章:

swift - 如果全局属性总是延迟计算,而局部属性从不延迟计算,那么lazy修饰符会修改什么?

objective-c - 为什么我们总是分配 Objective-C 原语?

javascript - 在方法中动态创建 JSON (Javascript) 中的对象属性

javascript - setState 不更新状态

javascript - ConstantSourceNode 设置的振荡器频率错误

javascript - Facebook oEmbed 端点 CORS 错误

Javascript 最佳实践 - 使用服务器端值

javascript - 进行数据绑定(bind) :click work like a marker. addListener()

java - com.ibm.db2.jcc.am.io : DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884

c# - 使用什么方法可以在初始化之前动态设置 ASPX 控件属性?