js一百零一夜之第九夜-javascript 匿名函数

来源:互联网 发布:华资软件技术有限公司 编辑:程序博客网 时间:2024/05/21 12:47
1.什么是匿名函数呢?为什么要用匿名函数?该如何使用呢?所有的答案都到碗里来-----------
1.1首先看看下面几种函数的定义
    1.function animal(){alert(123)},中规中矩的函数
    2.var animal=function(){alert(123)} 函数字面量
    3.var animal=new Funtion('x','alert(123)'),构造函数
2.从上面的的函数中,我们不难发现第二种函数没有方法名,有人说了,那不是有个变量名吗,将函数付给它不就是函数名吗?那你就大错特错了,
   究竟是为什么,语法这样规定的,都不是这样认为的,那假如我们把animal去掉不也可以吗,而其他的函数就不行了,所以可以看出第二种函数就是
   我们要找的---匿名函数,实际上相当多的语言都有匿名函数。
    我们再来看一点实际中的代码
        console = (function(){
var console_o = {};
var CONFIG = {
"debug" : true,
"info" : true,
"warn" : true,
"error" : true
};
     var PRINT_MODE = 1; //0 不输出; 1 console.debug()输出; 2 alert输出
    var platform_print = function(str){};
     if(typeof(Middleware)!="undefined" && typeof(Middleware.name)=="string")
{
    switch(Middleware.name)
{
    case "RocME":
    platform_print = function(str){RocME.debug(str)}; 
    break;
default:
    break;
}
}

    }());
            从这段代码中我们发现,匿名函数内可以定义任何自己想定义的变量而不用担心匿名函数外部的变量受到污染。这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美。jUI中也是使用了大量的匿名函数,有兴趣的同学可以看看实例。
        
3.那么该如何使用匿名函数呢,那就很简单了,在看两个例子,
                首先声明一个函数然后执行它,函数字面量
                  a.  (function(){alert(123)})();
                再看一个类似的例子,
                  b.  (fucntion(){alert(234)}());
                优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。
刚开始的时候我也不知道两个函数为什么不同样的写法,但是有异曲同工之秒,读了这句话才使我恍然大悟请看:)
---------------------------------------------------------------------------------------------------------------------------
使用括号运算符本身不会让括号中的代码立即执行,只有当括号包含的这个“分组”参与其他运算时,才会执行因此,(function(){})()这个语句,其实是首先用分组运算符评估了一个函数表达式,随后参与“函数调用”。而(function(){}())这个语句,则是用分组运算符评估了一个函数调用,随后由于语句的结束而被执行。从语句上来说有细微的差距,当然就结果而言是一样的





























0 0
原创粉丝点击