日期:2014-05-16  浏览次数:20336 次

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;
}