美文网首页
立执行函数的多种写法

立执行函数的多种写法

作者: BIGHAI | 来源:发表于2017-05-14 21:46 被阅读0次

    放松也可以作为自己失意时麻痹自己的一个绝妙借口,亦真亦假,实难分辨,最怕此时当局者迷。

    说出来我是不信的,关于函数居然还有下面这种用法:

    var fun = new Function("console.log(1)");
    fun();//输出1
    

    所以此时可以出现下面这种情况:

    var timer = setTimeout("console.log(1)" , 1000);//等同于下面这句
    var timer = setTimeout(function(){console.log(1);} , 1000)
    

    接下来了解关于函数声明和函数表达式的相关概念。由此带来的主要问题是函数声明具有声明提升的概念,即我们可以在函数声明之前就调用函数。但是对于函数表达式来说,这样做并不可以。相同的是,这两种写法都将函数变量暴露在当前的执行环境中。

    //下面的是一个函数声明
    function fun1(num){return num};
    //下面的是一个函数表达式
    var fun2 = function(num){console.log(num);}
    

    而对于我们主题中的立执行函数来说,匿名函数是立执行函数的必备部分。匿名函数不能够单独存在,像下面那样就是错的:

    function(num){return num;}//error
    

    立执行函数有多种写法:

    (function(num){console.log(num);})(1);//最稳妥的,满分推荐
    (function(num){console.log(num);}(1));
    //杀马特式写法,使用某些运算符
    !function(num){console.log(num);}(1);
    ~function(num){console.log(num);}(1);
    +function(num){console.log(num);}(1);
    -function(num){console.log(num);}(1);
    //不知所以式写法
    void function(num){console.log(num);}(1);
    

    END

    相关文章

      网友评论

          本文标题:立执行函数的多种写法

          本文链接:https://www.haomeiwen.com/subject/ozqcxxtx.html