繁体   English   中英

在javascript中声明和定义函数

[英]declaring and defining functions in javascript



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

我有两段代码,比如

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



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


这两者有什么区别>>
感谢名单:)

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

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

它将直接打印'abc'

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

就像这样:

a = 42;

与此相同:

a = (42);

还有这个:

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

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

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

生产PrimaryExpression:(Expression)的计算方法如下:

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

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

它们是有区别的。

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

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

(function() {});

而以下声明无效

function() {};

这通常没关系,但仍然......阅读这篇深入的文章了解更多信息: http//kangax.github.com/nfe/

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM