Я получаю странное поведение при объявлении объекта с логическим ИЛИ.Объявить переменную без ключевого слова var и логическое ИЛИ
my_var = my_var || {}; // throws TypeError
Если я добавляю var
ключевое слово
var my_var = my_var || {}; // returns empty object
Почему это? Кажется, я не могу найти объяснения. my_var
- глобальный масштаб, так почему же var
меняет поведение?
Не могли бы вы предоставить немного больше кода? Является ли my_var ранее установленным в сценарии в какой-то момент в пределах той же области? я бы предположил так. –
Да, 'my_var' должен быть объявлен на ранней стадии исполнения. В частности, в другом источнике JavaScript. Я столкнулся с этим во время тестирования в IE8. FireFox вел себя так, как ожидалось, но в IE8 я столкнулся с некоторыми проблемами времени выполнения. Эта тайна возникла, когда я пытался отлаживать. –
Все это звучит как повод для фактического явного проверки для неопределенного, для меня. – Kzqai