通常我们会做其中的一些:
第一种类型
(function(){
}());
输入2
+function(){
}();
但今天我看到了这个
$(run);
function run(){
//..
}
与前两者有什么不同?
答案 0 :(得分:0)
第三个版本在技术上与前两个版本不同。这两个第一个结构只是一种编写可以执行的表达式的方法,因为函数声明(以function
关键字开头的语句)不能立即调用。
第三个是不同的。它是jQuery文档就绪语法之一。如果函数被传递到$
函数,它将被附加到要在DOMContentLoaded事件上调用的回调堆栈(如果尚未发生),或者 - 它立即被调用。
检查jQuery's source代码以了解它在这种情况下如何处理函数。摘要:
// ...
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready !== undefined ?
rootjQuery.ready( selector ) :
// Execute immediately if ready is not present
selector( jQuery );
}