3



我对javascript中的函数(对象)有疑问。

我有两段代码,例如,

    var a= function(){
    console.log('abc')
     }



     var a= (function(){
     console.log('abc')
     })


这两者有什么区别>>
thanx :)

4

5 回答 5

1

没有区别。您有一个函数表达式,您可以在表达式周围放置任意数量的括号。

就像这样:

a = 42;

与此相同:

a = (42);

和这个:

a = (((((42)))));
于 2012-09-21T07:34:11.123 回答
1

没有实际区别。它们都会导致将匿名函数分配给a.

第一个是“简单的分配”。在第二个中,括号充当“分组运算符”,它做一件事:

产生式 PrimaryExpression : ( Expression )的评估如下:

  • 返回计算表达式的结果。这可能是参考类型。

因此,分组运算符将返回其中包含的函数,并将其分配给a,就像第一个示例一样。

于 2012-09-21T07:35:14.587 回答
1

现在没有区别,但是如果您在第二个函数之后添加另一个括号 (),它将在不调用的情况下运行函数。

 var a= (function(){
     console.log('abc')
     })()

它会立即打印'abc'

于 2012-09-21T07:33:07.950 回答
1

它们是有区别的。

( 和 ) 构成一个分组。分组只能包含一个表达式,因此其中的任何函数都是表达式而不是声明。

由于 ECMA 规定函数声明必须始终具有函数名,并且函数表达式可以省略它,因此您将能够执行以下操作

(function() {});

而以下声明无效

function() {};

这并不重要,但仍然......阅读这篇深入的文章了解更多信息:http: //kangax.github.com/nfe/

于 2012-09-21T07:45:06.303 回答
0

如前所述,您给出的两个示例基本相同。

这个问题在有关括号用法的答案中包含更多信息,可能值得您花时间阅读!

为什么用括号来包装 javascript 函数调用?

于 2012-09-21T07:36:18.193 回答