在jquery ready函数中声明函数的最佳实践

Ral*_*veo 31 javascript jquery

我没有找到一个很好的参考来声明我自己的功能

jquery.ready(function(){});
Run Code Online (Sandbox Code Playgroud)

我想声明它们,因此它们在就绪闭包的同一范围内.我不想让全局的js命名空间变得混乱,所以我不希望它们在ready闭包之外声明,因为它们只针对里面的代码.

那么如何声明这样的函数......我并不是指一个自定义的jquery扩展方法/函数......只是一个常规的'ol函数,它做了一些微不足道的事情,比如:

function multiple( a, b ){ 
    return a * b; 
}
Run Code Online (Sandbox Code Playgroud)

我想遵循jquery建议和函数声明语法.我可以通过声明一个类似上面的乘法函数来使它工作......但是由于某些原因它看起来不正确所以我想我只需要一些指导.

jon*_*ohn 55

我相信你可以在ready()闭包中声明函数,但是在这里你可以更明确地了解本地作用域:

jQuery.ready(function() {

     var myFunc = function() {

           // do some stuff here

     };

     myFunc();


});
Run Code Online (Sandbox Code Playgroud)

  • 对不起,如果这是一个愚蠢的评论,但这个答案让我感到困惑.函数调用不应该是"myFunc();" 而不是"myFunction();" ? (4认同)

mat*_*t b 9

这可能听起来很简单,但你只是......宣布这个功能.Javascript允许函数具有内部函数.

$(document).ready( function() {
   alert("hello! document is ready!");

   function multiply(a, b) {
       return a * b;
   }

   alert("3 times 5 is " + multiply(3, 5));
});
Run Code Online (Sandbox Code Playgroud)


Gla*_*vić 7

我有一个StartUp函数,我用它打印下面:

function StartUp(runnable)
{
    $(document).ready(runnable.run);
}

var ExternalLinks =
{
    run: function()
    {
        $('a[rel="external"]').bind('click', ExternalLinks.click);
    },
    click: function(event)
    {
        open(this.href);
        return false;
    }
}
StartUp(ExternalLinks);

var ConfirmLinks =
{
    run: function()
    {
        $('a.confirm').bind('click', ConfirmLinks.click);
    },
    click: function(event)
    {
        if (!confirm(this.title)) {
            return false;
        }
    }
}
StartUp(ConfirmLinks);
Run Code Online (Sandbox Code Playgroud)

我的网站是模块化的,所以每个模块都有N个动作,每个动作都有一个.js文件,所以我只需编写函数并用StartUp调用它(... functionName ...)