日期:2014-05-16 浏览次数:20430 次
(function(a){alert(a)})(1); //上面的代码就是一个自动执行的js函数,和jquery中的一样。其中的 function(a){alert(a)} //是一个匿名函数,接受一个参数。随后的(1)表示对这个匿名函数的调用,并且传递了一个参数,这与我们平常声明一个函数,并调用是一样的: function x(a) { alert(a); } x(); //现在来说一下对于这个自动执行函数我所理解的执行顺序: //首先,第一个小括号,也就是“(function(a){alert(a)})”是一个运算符号,就像: (1+2)*3 //一样,这样,就是把这个匿名函数给返回,同时紧跟着后面的小括号“(1)”就把它给调用了。如果我们把包裹住匿名函数的小括号给去掉的话, function(a){alert(a)}(1); //这样,就不会执行。这时,虽然有了匿名函数,但是并没有对这个函数的引用,后面的小括号仅仅是一个运算优先级而已,并不是对方法的执行。 //不过我们这样写就可以执行了: +function(a){alert(a)}(1); //或者 -function(a){alert(a)}(1); //或者 void function(a){alert(a)}(1); //或者 new function(a){alert(a)}(1); //上面的写法都可以。 //前面添加的“+,-,void,new”是运算符和执行关键字,这样会强制匿名函数在声明后返回引用,而后面的小括号就是对函数的执行