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?
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?
Im zweiten Fall ist bar
ein Label. Siehe: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/label
"2
" ist eine gültige Aussage in sich.
Τhis ist die grundlegende Syntax:
() => { statements }
Und die erweiterte:
// Parenthesize the body of function to return an object literal expression:
params => ({foo: bar})
Die beiden Syntax korrekt sind, aber sie definieren nicht die gleiche Funktion.
function foo1() {
return {bar: 2};
}
function foo2() {
bar: 2;
}
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());
Da diese –
korrekte Syntax ist mit Umfang Was hat das zu tun? – deceze
'' let foo =() => {bar: 2} '' - "bar" ist eine Bezeichnung. Also, wenn Sie diese Funktion aufrufen, wird es "undefunied" – lomboboo