2017年1月

jQuery中$(function()与(function($)等的区别

发布于 , 1115 次浏览

(function($) {…})(jQuery); 这里实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){…})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery 相当于funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);

!function(){}();   与 ;!function(){}();

从语法上来开,Javascript中分号表示语句结束,在开头加上,可能是为了压缩的时候和别的方法分割一下,表示一个新的语句开始。所以,如果在一个单独的JS文件中,开头的分号是没有任何意义的,可以删掉。 叹号是逻辑运算符,是“非”的意思,常见这种写法 if(!true){};而将运算符加载函数定义的前面,则是将函数看做一个整体,然后再调用这个函数,并对返回的结构进行逻辑运算。 说白了,此处就是构建了一个立即执行函数,自己写的时候,可以使用更清晰的格式:(function(){})();

补充一点:在函数声明 function (){} 后面加 () ,意思是执行这个函数声明。有的叫法是“匿名自动执行函数”,更准确的表示应该为“立即执行函数”。 但立即执行函数,要作为表达式的一部分才行,不然js解释器会报语法错误。一般,成为表达式的最容易理解方式是:在左右两端加一个圆括号,像这样 (function (){}) 。所以,立即执行函数最常见的写法是 (function (){})(),这是一个语句,在前面和后面都可以加 ; 。 其实立即执行函数还有N种写法,比如 (function (){}) 也行,在函数声明前加一元运算符也行: !function (){}() 、 ~function (){}() 。甚至,对一元运算符进行组合也可以: !!!!function (){}() 、 ~~~function (){}() 、 !~!function (){}() 。

$(function(){…}); 或者: jQuery(function($) { … }); 允许你绑定一个在DOM(不包含图片)文档载入完成后执行的函数。这个函数的作用如同$(document).ready()一样,只不过用这个函数时,需要把页面中所有需要在 DOM 加载完成时执行的$()操作符都包装到其中来。从技术上来说,这个函数是可链接的--但真正以这种方式链接的情况并不多。 全写是: $(document).ready(function(){ … });