我前一段时间问this question,对接受的答案感到满意。然而,我刚才意识到以下技术:
var testaroo = 0;
(function executeOnLoad() {
if (testaroo++ < 5) {
setTimeout(executeOnLoad, 25);
return;
}
alert(testaroo); // alerts "6"
})();
返回我期望的结果。如果T.J.Crowder我的第一个问题的答案是正确的,那么这种技术不应该起作用吗?
答案 0 :(得分:6)
嗯,它会起作用,JScript(IE)的问题是,函数表达式(executeOnLoad
)的标识符会泄漏到其封闭范围,并实际创建两个功能对象..
(function () {
var myFunc = function foo () {};
alert(typeof foo); // "undefined" on all browsers, "function" on IE
if (typeof foo !== "undefined") { // avoid TypeError on other browsers
alert( foo === myFunc ); // false!, IE actually creates two function objects
}
})();
答案 1 :(得分:6)