2017-06-06 92 views
2

我會在瀏覽器ES6箭頭功能

let foo =() => ({ bar: 2 }) 

測試該卻不小心輸入

let foo =() => { bar: 2} 

爲什麼不拋出一個錯誤?

+1

因爲這是正確的語法 –

+1

這是什麼都與範圍呢? – deceze

+1

'let foo =()=> {bar:2}'' - 「bar」是一個標籤。所以,如果你調用這個函數,它將返回「undefunied」 – lomboboo

回答

0

Τhis是基本語法:

() => { statements } 

和先進的:

// Parenthesize the body of function to return an object literal expression: 
params => ({foo: bar}) 

MDN Arrow functions

0

兩個語法是正確的,但他們沒有定義相同功能。

function foo1() { 
    return {bar: 2}; 
} 

function foo2() { 
    bar: 2; 
} 
0

取決於什麼酒吧。如果它的標籤,那將是對象的關鍵。 但是,如果它是一個變量,該語法將無法正常工作。

爲好奇的心態一些其他的語法如下所示: -

let foo =() => ({ bar: 2}); //works. object is returned 
//let foo =() => ({ 'bar': 2}); //works. object is returned 

//let foo =() => { let bar = 2; return bar; }; //works 
//let foo = (() => { let bar = 2; return bar; }); //works 
//let foo = (() => { let bar = 2; return bar}); //works 

//let foo =() => ({ let bar = 2; return bar; }); //WONT work 
//let foo = (p1=3) => p1 ; //works 
let foo =() => 1; //works 

console.log(foo());