【发布时间】:2015-06-01 18:39:19
【问题描述】:
说明
我总是错误地认为in 运算符正在检查属性的undefined 值。快速查看ES5 specification 会发现in 运算符最终会调用[[GetProperty]],这将返回属性的值。
为什么当foo.bar设置为undefined时in操作符返回true,而当foo.bar从未设置时它是false,即使它们的值都是undefined?
示例
var foo = {
bar: undefined
};
'baz' in foo
// -> false
'bar' in foo
// -> true
相关:typeof foo['bar'] !== 'undefined' vs. 'bar' in foo
相关问题是询问何时foo.bar 从未设置为undefined。
【问题讨论】:
-
只检查 prop 是在对象上定义还是在继承的对象上定义,而不是值是什么。
标签: javascript