我有一个自我启发的功能,如下:
(function myFunc(){
alert("do something cool");
})();
我正在尝试在调整浏览器大小时再次运行它。因此我尝试了这个:
$(window).resize(function() {
myFunc();
});
浏览器报告myFunc
不存在。我已经尝试重新排序上面的内容,以便之前出现调整大小功能,这仍然无效。
请问有人能以我的方式指出(可能是非常明显的)错误吗?
答案 0 :(得分:3)
您使用的语法只允许在myFunc
函数本身中看到名称myFunc
。它被称为named function expression。
(function myFunc() {
// myFunc can be seen and used here
})();
// but not here.
相反,尝试;
function myFunc() {
alert("do something cool");
}
myFunc();
$(window).resize(function () {
myFunc();
});
答案 1 :(得分:1)
函数可以通过arguments.callee
引用自身,但必须正确完成。
window.onresize = arguments.callee;
这会奏效。但是,如果你是一个jQuery坚果(注:I am not),你可能会想写这个:
$(window).resize(function() {arguments.callee();});
这将失败并导致无限循环,因为在被调用时arguments.callee
引用调整大小函数本身。
编辑:经过进一步考虑,它不会导致无限循环。由于堆栈溢出错误,它会在一会儿后出错。我应该意识到,考虑到我发布的地方:p