JavaScript-在哪里声明变量和定义函数?

JavaScript-在哪里声明变量和定义函数?,javascript,Javascript,哪一个更好: var foo = 0, fnFoo = function (bar) { "use strict"; // Do stuff }; $(document).ready(function () { "use strict"; fnFoo(foo); }); 或 区别在于变量/函数声明的位置。在这种情况下,假设只有ready事件需要使用foo和fnFoo如果只有ready事件需要它,则将其放入ready中。这

哪一个更好:

var foo = 0,
    fnFoo = function (bar)
    {
        "use strict";
        // Do stuff
    };

$(document).ready(function ()
{
    "use strict";
    fnFoo(foo);
});


区别在于变量/函数声明的位置。在这种情况下,假设只有
ready
事件需要使用
foo
fnFoo
如果只有
ready
事件需要它,则将其放入
ready
中。这就是封装的全部要点。尽可能限制对变量的访问,以减少代码中的错误。如果您后来意外地声明了另一个
foo
fnFoo
,会发生什么情况


不仅如此,它还使您的代码更易于理解。这意味着您确切地知道每个变量的用途和位置。

一定要使用后一种情况,因此1。这些变量与使用它们的代码一起分组,以及2。您的VAR不会污染全局范围。

您只需等待文档准备就绪,以便
jQuery
知道
DOM
已完全设置,从而可以访问表单字段和其他
DOM
对象。因此,除非您的
函数
需要访问
DOM
元素,否则我将在
$(文档)之前声明页面范围的
var
s和
函数。准备好了吗(…
块,并且,当您知道它们起作用时,将代码移出到单独的脚本文件中,特别是当
函数
将在web的其他部分重用时。

仅当
就绪
回调之外还有其他代码也需要这些函数/var时。否则,它应该包装在jquery插件中。
var fnFoo=function(bar){…};
->
function fnFoo(bar){…}
$(document).ready(function ()
{
    "use strict";

    var foo = 0,
        fnFoo = function (bar)
        {
            "use strict";
            // Do stuff
        };

    fnFoo(foo);
});