我有一段代码看起来像这样:
$(function() {
// some code here to do stuff
})();
最后的extra()有什么想法?无论有没有它们,脚本都能正常工作。
我确信之前已经讨论过这个问题,但我不知道如何进行代码搜索。
答案 0 :(得分:5)
我会说这是一个错字。
(JQuery DOM Ready):
$(function() {
// some code here to do stuff
});
或(自行调用匿名函数):
(function() {
// some code here to do stuff
})();
答案 1 :(得分:2)
实际上这似乎会产生运行时错误,因为jQuery对象(由$(...)
调用返回)不是函数本身。因此,尝试调用它是一个错误。使用Javascript控制台进行测试将确认这一点。
看起来这段代码“结合”了使用jQuery设置文档就绪回调的想法,并在函数中包装初始化代码以获得单独的作用域,但最终结果只是一个错误。
这个
$(function() { ... }); // document-ready callback with jQuery
或者
(function() { ... })(); // initialization code in its own scope
会有意义。
答案 2 :(得分:2)
前面有$
,这并不意味着什么。它可能应该是$(function() {});
,这是jQuery在dom准备就绪时调用函数的方式。它与$(document).ready(function(){});
相同。
使用JavaScript函数,额外的括号集会立即调用该函数。
(function() {
alert( "hi" );
})();
与
几乎相同function fn() {
alert( "hi" );
}
fn();
答案 3 :(得分:0)
不确定Jon发布的$(function(){})()
(它会导致jQuery出错 - 我可以看到$(function(){}());
)但是通常当你看到这个时,trailing()实际上会调用该函数。
var a = 2;
(function() {
a = 1;
})
alert(a);
因为函数永远不会被调用,所以会导致2 - 它只是声明了。
var a = 2;
(function() {
a = 1;
})();
alert(a);
结果为1,因为现在调用声明的函数。这通常是为了创建一个匿名函数而不必显式声明它(例如function doSomething();
),这会使用无聊的实用函数来填充你的命名空间。