关于javascript:为什么我们要在JS中的函数前面加'(‘?

Why do we put '(' before fucntion in JS?

本问题已经有最佳答案,请猛点这里访问。

为什么我们有(在这里的功能词之前?

1
2
3
4
5
6
7
8
(function() {

     var message ="Привет"; function showMessage() {
    alert( message );   }

     showMessage();

})();


尽量不要:

1
function() { return 1; }()

然后你会得到Uncaught SyntaxError: Unexpected token (

javascript解析器以两种模式运行,我们称之为表达式模式和正常模式,在正常模式下,JS解析器需要顶级声明,如函数和代码块。使用'('进入表达式模式,在表达式模式中,function() { }将被解释为常量,其值为函数。

对象文本也有类似的情况:

1
{ foo: 1 }

不使用'('这意味着代码块,其中只有一个表达式-常量1在标签后面,当使用({ foo: 1 })分析器进入表达式模式并将其解释为具有属性foo的对象文本时。

为什么有两种模式,它是由语言语法强制执行的,在JS的情况下非常复杂(就像大多数基于C的语言一样)。