在javascript中声明和定义函数

时间:2012-09-21 07:27:10

标签: javascript function object



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

我有两段代码,如

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



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


这两个>>
之间有什么区别? 感谢名单:)

5 个答案:

答案 0 :(得分:1)

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

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

它将直接打印'abc'

答案 1 :(得分:1)

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

就像这样:

a = 42;

与此相同:

a = (42);

和此:

a = (((((42)))));

答案 2 :(得分:1)

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

第一个是" simple assignment"。在第二个中,括号表示为" grouping operator",它做了一件事:

  

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

     
      
  • 返回评估Expression的结果。这可能是参考类型。
  •   

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

答案 3 :(得分:1)

有区别。

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

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

(function() {});

而以下声明无效

function() {};

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

答案 4 :(得分:0)

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

这个问题在关于括号使用的答案中包含了更多的信息,可能值得您花时间去探索!

Why are parenthesis used to wrap a javascript function call?