js的函数的执行

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

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

阅读 2.3k
2 个回答

你有很多种方法让他弹出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()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题