查看http://jsfiddle.net/FDhQF/1/以获得一个微不足道的示例。
在Javascript中,未定义(undefined)和未被定义(not being defined)之间有什么区别?例如,尝试访问一个未定义的对象属性(本质上是尝试访问一个变量)将返回undefined
。但是您也可以设置某些内容= undefined
。当您这样做时,尝试访问它仍将返回undefined,但指针仍然存在。如上所述的示例,迭代对象仍会遍历您已(重新)声明为未定义的属性。看起来有两种不同类型的未定义情况。是否有人能够阐明一下这种情况?
.hasOwnProperty
之外,还有in
运算符需要提及。 - stragertypeof x === 'undefined'
。另外,我不明白为什么Object.prototype.hasOwnProperty
被认为是不安全的;我用它来达到你声称它不安全的相同目的。您能否在这一点上澄清一下? - stragerundefined
的实现相比于更传统的“抛出异常”或“返回nil
/null
”方法有何优势,但是您的回答确实有助于阐明这种情况。 - Stevenx = foo.bar || default;
这样简单的速记法。 - strager