注意:根据ECMAScript5.1, section 15.1.1.3,window.undefined是只读的。JavaScript:undefined!undefined?
- 现代浏览器正确实现了这一点。例如:5.1的Safari,Firefox的7,铬20等
- 未定义仍然多变在:铬14,...
当我最近集成Facebook Connect与Tersus,我最初接收的尝试调用Facebook API函数时出现错误消息Invalid Enumeration Value
和Handler already exists
。
原来,这个问题的原因是
object.x === undefined
返回false时,有在“对象”没有财产“X”。
我工作围绕这一问题通过定期平等更换全等在两个类似Facebook的功能:
FB.Sys.isUndefined = function(o) { return o == undefined;};
FB.Sys.containsKey = function(d, key) { return d[key] != undefined;};
这使事情对我的工作,但似乎在Facebook的JavaScript代码和之间的某种碰撞的暗示我拥有。
这是什么原因造成的?
提示:有据可查的是undefined == null
而undefined !== null
。这不是问题。问题是我们如何得到undefined !== undefined
。
有趣的是,我只是在我的控制台试过。 `var a = {}; a.b === undefined // true`。你确定你的`object.x === undefined`返回false是因为对象中没有字段x? – 2011-09-26 21:00:18
“按照ECMAScript5.1,第15.1.1.3节,window.undefined是只读的。“ - Horray,因为在以前的版本中,有人可以在全球范围覆盖`undefined`,并且所有内容都会中断:( – Dan 2013-06-04 09:01:14