2017-06-06 11 views
2

Ich würde dies in Browser testenes6 arrow Funktion

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

Aber getippt versehentlich

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

Warum nicht werfen einen Fehler gemacht hat?

+1

Da diese –

+1

korrekte Syntax ist mit Umfang Was hat das zu tun? – deceze

+1

'' let foo =() => {bar: 2} '' - "bar" ist eine Bezeichnung. Also, wenn Sie diese Funktion aufrufen, wird es "undefunied" – lomboboo

Antwort

0

Τhis ist die grundlegende Syntax:

() => { statements } 

Und die erweiterte:

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

MDN Arrow functions

0

Die beiden Syntax korrekt sind, aber sie definieren nicht die gleiche Funktion.

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

function foo2() { 
    bar: 2; 
} 
0

Hängt davon ab, welche Bar ist. Wenn es ein Label wäre, wäre das der Schlüssel des Objekts. Aber diese Syntax funktioniert nicht, wenn es eine Variable war.

einige zusätzliche Syntaxen für den neugierigen Geist ist wie folgt: -

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());