Это хорошо известная ошибка JScript.
В IE глобальные переменные не являются перечисляемыми , если вы явно не определите их как свойства объекта окна.
var a = function () {}; // It won't be enumerated in a `for...in` loop
window.b = function () {}; // It will be enumerated in a `for...in` loop
Два вышеупомянутых способа действительно похожи, единственное отличие состоит в том, что a
объявляется с помощью оператора var
, и это делает его недоступным для удаления, тогда как b
может быть "deleted
".
delete window.a; // false
delete window.b; // true