ПРИМЕЧАНИЕ. Согласно ECMAScript5.1, section 15.1.1.3, window.undefined доступен только для чтения.JavaScript: undefined! == undefined?
- Современные браузеры реализуют это правильно. например: Safari 5.1, Firefox 7, Chrome 20 и т.д.
- Неопределенное еще изменчива в: Chrome 14, ...
Когда я недавно интегрированный Facebook Connect с Tersus, я сначала получил сообщения об ошибках Invalid Enumeration Value
и Handler already exists
при попытке вызвать функции Facebook API.
Оказалось, что причиной проблемы была
object.x === undefined
возвращение ложным, когда нет свойства «х» в «объекта».
Я работал вокруг проблемы путем замены строгого равенства с регулярным равенства двух функций 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
.
Интересно, я просто попробовал в своей консоли. 'var a = {}; a.b === undefined // true'. Вы уверены, что ваш 'object.x === undefined' возвращает false, потому что в объекте не было поля x? –
«В соответствии с разделом 15.1.1.3 ECMAScript5.1, window.undefined доступен только для чтения."- Horray, потому что в предыдущей версии кто-то мог переписать' undefined' глобально, и все сломалось бы :( – Dan