注意:根据ECMAScript5.1,第 15.1.1.3 节,window.undefined 是只读的。
- 现代浏览器正确地实现了这一点。例如:Safari 5.1、Firefox 7、Chrome 20 等。
- Undefined 在以下版本中仍然可以更改:Chrome 14,...
当我最近将Facebook Connect与Tersus集成时,我最初收到错误消息Invalid Enumeration Value
以及Handler already exists
尝试调用 Facebook API 函数时。
结果发现问题的原因是
object.x === undefined
当'object' 中没有属性'x' 时返回false。
我通过在两个 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
。