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;
}
posted @ 2013-08-08 16:25  yuer629  阅读(157)  评论(0编辑  收藏  举报