ПРИМЕЧАНИЕ. Согласно 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
возвращает false, когда в 'объекте' нет свойства 'x'.
Я работал над проблемой, заменив строгое равенство регулярным равенством в двух функциях Facebook:
FB.Sys.isUndefined = function(o) { return o == undefined;};
FB.Sys.containsKey = function(d, key) { return d[key] != undefined;};
Это заставило меня работать, но, похоже, намекает на какое-то столкновение между кодом JavaScript Facebook и моим собственным.
Что может быть причиной этого?
Подсказка: хорошо документировано, что undefined == null
пока undefined !== null
. Здесь не проблема. Вопрос в том, как мы получаем undefined !== undefined
.