首页 > js的函数的执行

js的函数的执行

    function a(){
        alert("a");
    }();

这段代码为什么不能弹出a,,求解答。谢谢


你有很多种方法让他弹出a,比如:

~function a(){
    alert("a");
}();

-function a(){
    alert("a");
}();

+function a(){
    alert("a");
}();

!function a(){
    alert("a");
}();

当然,最正统的是这样:

(function a(){
    alert("a");
})();

原理是: 通过前面的符号,让这个语句强制解析成表达式,再加上你最后的一对小括号,让表达式执行,美其名曰 立即执行的函数表达式(IIFE)。

再扯点。。

你的函数

function a(){
    alert('a');
}

可以用函数字面量来写,即

var a = function(){
    alert('a');
}

这样的话,你通过这样就可以执行函数a了

a(); // alert  ==> a

所以

在你的函数外没套上小括号的时候,像这样

function a(){
    alert('a');
}                 // 语句

(function a(){
    alert('a');
})               // 表达式

而后面跟的小括号() 是让你的表达式执行而已

(function a(){
    alert('a');
})()

就像这样

a()

(function a(){
    alert("a");
})();


楼上说得对,表达式语句不能以 function 开头。
参考 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262....

【热门文章】
【热门文章】