25

我在很多地方读到,您可以通过以下方式在加载时自动启动 js 函数:

$(function() {
    // code...
});

或者

var myFunc = function() {
   // code...
}();

我的问题是,你以后如何调用这些函数?因为简单的声明

function myFunc() {
    // code...
}

可以轻松调用,但不会自动启动。我必须在加载时手动调用它们,这很烦人,占用代码中的空间,如果我忘记了它可能是一个错误源。

如果你不明白我的解释,这里有一个例子:

我的表格中有一个“体重”和一个“身高”字段,我需要计算 BMI(身体质量指数)。当页面加载时,重量和高度由数据库填充,然后我在一切准备就绪时启动计算。但后来,如果用户改变体重或身高,BMI 必须立即重新计算。最好的方法是什么?使用 jquery 或纯 JS,我不介意。

谢谢。

4

1 回答 1

45

可重用的即时函数

var reference = (function thename(){

    //function body

    return thename; //return the function itself to reference

}()); //auto-run


reference(); //call it again
reference(); //and again

请注意,调用该函数会返回对您刚刚调用的函数的引用。

var anotherReference = reference(); //anotherReference === reference
于 2012-05-22T14:22:39.503 回答