正确的语法来调用自调用函数

时间:2013-08-30 12:13:32

标签: javascript syntax

我有一个自我启发的功能,如下:

(function myFunc(){
    alert("do something cool");
})();

我正在尝试在调整浏览器大小时再次运行它。因此我尝试了这个:

$(window).resize(function() {
    myFunc();
});

浏览器报告myFunc不存在。我已经尝试重新排序上面的内容,以便之前出现调整大小功能,这仍然无效。

请问有人能以我的方式指出(可能是非常明显的)错误吗?

2 个答案:

答案 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