89510194 2016-08-30
1、(function($){…})(jQuery);
1)、原理:
这实际上是匿名函数,如下:
function(arg){…}
这就定义了一个匿名函数,参数为arg
而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
(function(arg){…})(param)
这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
相当于funtionoutput(s){…};output(jQuery);或者varfn=function(s){…};fn(jQuery);
2)、作用(非常有用):
这种写法的最大好处是形成闭包。在(function($){…})(jQuery)在内部定义的函数和变量只能在此范围内有效。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>demo1</title> <script type="text/javascript" src="js/jquery-1.8.3.min.js" ></script> <script type="text/javascript"> $(function(){ var i=2; function init(){ alert("外部"+i); } ;(function($){ var i=3; function init(){ alert("内部"+i); } init(); })(window.jQuery); init(); }) </script> </head> <body> <input type="text" id="name" name="name" placeholder="123" maxlength="10"> </body> </html>
执行结果:内部3
外部2
2、$(function(){…});jQuery(function($){…});$(document).ready(function(){…})
这三个的作用是一样的,本人比较需要用第一种、书写简单。