答案给编辑的问题:
but what about this
let x = (function()
{
})
没有目的的那些()
在所有服务。这是完全一样的:
let x = function()
{
}
答覆嵌入评论:
在a comment你说你其实是想知道这一点:
let foo =() => ({ bar: { foo: 1, bar: 2, } });
的()
是必要的,因为这是一个带有简洁主体的的箭头功能返回对象初始值设定项的结果。但是,如果在=>
之后立即有{
,则{
将是块(冗长)正文的开头(而不是对象初始值设定项的开头)。这就是为什么()
在简明箭头的表达式主体周围是必需的,以便消除{
的歧义。
请注意,()
是而不是各地的功能;只是它的身体。
你可以写你所做的一切:
let foo =() => ({ bar: { foo: 1, bar: 2, } });
或{}
和return
:
let foo =() => { return { bar: { foo: 1, bar: 2, } } };
但不是:
let foo =() => { bar: { foo: 1, bar: 2, } }; // Wrong
因为{
会被解读为块体的开始。
答到original question:
我将承担这些有名字,否则你的第一个例子是一个语法错误。
but what about this
(function()
{
})
这将是一个函数表达式不是 immediateley调用。与第一个示例不同,它是在逐步执行达到它时进行评估的,而不是在最初创建它所处的上下文时进行评估。
除非有什么东西在使用该表达式的结果,否则它是一个无操作(无所事事),因为表达式中没有任何东西运行它。
如果表达式的结果是正在使用(它是一个赋值语句的右边,它被传递给函数作为参数等),它周围的()
是不必要与function
表达。 (这并不总是带有箭头的功能的情况下)。
你发布的链接中提到了'(function(){})'? – Xufox
这一个:'让富=()=>({ 栏:{ FOO:1, 栏:2, } });'@Xufox –
必须有更多的这个比你所示。如图所示,第一个例子是语法错误,最后一个例子完全没有意义。 –