立即执行函数的原理是什么?

解决方案 »

  1.   

    立即执行函数的一般形式是
    (function(){})()
    原理是在第一个()内创建一个函数表达式。函数后面的()实际上是执行函数的运算符,表示立即执行这个函数表达式。为什么要在()内创建函数呢?这中因为function(){}有两种用法。
    当function关键字出现在行首,它是一条“语句”,作为“语句”是没有返回结果的。所以不能用“语句”后面加()来执行函数
    当function关键字不是出现在行首,它就是一条“表达式”,作为“表达式”就有返回结果了。可以用“表达式”后面加()来执行函数在()内创建函数就是为了不让function关键字出现在行首。
    除了(function(){})()
    还可以
    (function(){}())
    [function(){}()]
    ~function(){}()
    +function(){}()
    -function(){}()
    !function(){}()
    当然也可以用
    var txt=function(){}()
      

  2.   

    根据w3c标准应该是:
    (function (){}());
    还有就是只有函数表达式才能被执行符号执行
    而function (){};不能直接执行因为其是函数声明而不是函数表达式;
      

  3.   

    其实我是不建议在行首使用“(”的,当上一行结尾处没有加“;”时,有可能会错误的把两行合并成一条语句来执行。
    比如
    var foo = function () {}(function(){ })();下边行首的“(”会变成立即执行foo函数的()建议是用一元运算符 ! 或 ~ 来实现
    !function(){ }();
    ~function(){ }();当然也可以在“(”前面补个“;”
    ;(function(){ })();