答案給編輯的問題:
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 –
必須有更多的這個比你所示。如圖所示,第一個例子是語法錯誤,最後一個例子完全沒有意義。 –