javascript 匿名函数

来源:互联网 发布:淘宝介入买家输了可以 编辑:程序博客网 时间:2024/06/06 18:58

函数的定义,大致可分为三种方式:


第一种:这也是最常规的一种
function double(x){   
    return 2 * x;       
}


第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符串,很不方便,不建议使用。


var double = new Function('x','return 2 * x;');


第三种:


var double = function(x) { return2* x; }


注意“=”右边的函数就是一个匿名函数,创造完毕函数后,又将该函数赋给了变量double。


匿名函数的创建 


第一种方式:就是上面所讲的定义double函数,这也是最常用的方式之一。


第二种方式:

(
function(x, y){   
alert(x + y);     
}
)(2, 3);


这里创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。括号是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行. 


自执行的匿名函数 

    1. 什么是自执行的匿名函数?
    它是指形如这样的函数: (function {// code})();


    2. 疑问
    为什么(function {// code})();可以被执行, 而function {// code}();却会报错?


    3. 分析
    (1). 首先, 要清楚两者的区别:
    (function {// code})是表达式, function {// code}是函数声明.
    (2). 其次, js"预编译"的特点:
    js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
    (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
    当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.
   另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符……
如:
!function(){  
  alert("另类的匿名函数自执行");  
}();


 匿名函数的作用:
1 创建闭包
2 构建命名空间,以减少全局变量的使用
0 0
原创粉丝点击