js里面()的作用?

在立即执行函数里面,()里面包裹着一个匿名函数,将匿名函数看作函数表达式,那么()该怎么理解?以前也见过类似的在()里面写表达式的,所以()该怎么理解?

阅读 4.2k
5 个回答

圆括号本身是一运算符:它里边有东西的话,它起提升优先级的作用;如果它里边没东西,就是函数调用。函数声明和函数表达式的语法其实非常的像(参见函数),区别只在于函数表达式中的函数名是可以忽略的(就是匿名函数)。所以如果看到没名的函数,那一定是函数表达式~那匿名函数为啥要用圆括号包起来?原因在于如果不包的话,没名又没赋给变量,咋引用?于是系统会认为你写了个不合(基本)法的表达式;括起来以后呢,相当于对函数返回值加了一道计算,所以就合法了,再加个括号调用执行,就变成了IIFE(立即调用函数表达式)了。

直接看ECMA-262 5.1里的语法定义,表达式有下面几种:

图片描述

最后一个就是题主想问的(),来看文档:

图片描述

原来正式的名称是Grouping Operator,作用就是对里面的表达式求值,然后返回求值的结果。

首先()是一种运算符,它有两种用法:
1.(expression):表示对expression进行求值,并且return求值的result。
2.functionName():表示调用函数functionName。

    //匿名函数自执行
    (function(){
        console.log(1)
    })();

    //函数表达式
    var someFun = function(){
        console.log(1);
    }
    someFun();

上面的这两种写法其实是等价的;
在匿名函数的第一个括号里,其实是将这个函数匿名函数变为了函数声明,然后后面的一个括号表示函数执行。
希望对你有用!

推荐问题
宣传栏