[javascript]IE中的所有函数都在哪里?

[javascript]IE中的所有函数都在哪里?,javascript,internet-explorer,Javascript,Internet Explorer,如果我想在firefox中获取程序中声明的所有函数和变量,我只需迭代“window”对象。例如,如果我有var a=function(){};我可以用a();或window.a();在firefox中,但不在IE中。我有一个函数迭代窗口对象,并在程序中写入所有声明的函数名,如下所示: for (smthng in window) { document.write(smthng); } 在FF工作(我以前有些东西没有申报)。有什么想法吗?这是一个众所周知的JScript错误 在IE中,除

如果我想在firefox中获取程序中声明的所有函数和变量,我只需迭代“window”对象。例如,如果我有var a=function(){};我可以用a();或window.a();在firefox中,但不在IE中。我有一个函数迭代窗口对象,并在程序中写入所有声明的函数名,如下所示:

for (smthng in window) {
    document.write(smthng);
}

在FF工作(我以前有些东西没有申报)。有什么想法吗?

这是一个众所周知的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
可以“
删除

这里有一个解决方法:

delete window.a; // false
delete window.b; // true