js的自动用匿名函数
在看jquery源码的时候第一步就是遇到这个代码
(function( window, undefined ) {
// jquery code
})(window);
接触js不是很多会很费解,自己写了个以下的匿名函数:
<script type="text/javascript"> (function(x,y){ alert(x+y); return x+y; })(1,2); </script>
发现它是可以执行的。稍微研究了下分享如下:
我们通常定义函数都是
function add(x,y){
alert(x+y);
}
var a = function add(x,y){
alert(x+y);
}
这两种方式,不过,在js里面有匿名函数的概念。就比如
function(x,y){ alert(x+y); return x+y; }
就是一个匿名函数,如果a = function(){}这种形式定义函数,那么a()就能够执行函数,因为a是这个函数的一个引用,那么匿名函数后面直接加括号能不能执行呢?结果是不能执行。要想执行,可以选择的一种方法就是把匿名函数用括号括起来,把它当作表达式来处理,这样后面加括号会执行前面的表达式。这样就出现了
(function(x,y){ alert(x+y); return x+y; })(1,2);
这种形式。
在js里面括号可以把括号里面的内容看成是表达式,这个也是很特有的,不过在eval解析JSON 时会经常用到,
function strToJson(str){ // eval 中字符串两旁加了强制运算符() var json = eval('(' + str + ')'); return json; }