2017-09-20 9 views
1

矢印関数で値を返すことと、本文を追加することとreturnを入力することには違いがありますか?矢印の機能体と戻り値。 ()=> {戻り値;}と()=>値;

私が知っている限り、彼らは同じです。ここで

は、セッションです:

let a =() => 1; 
a() 
1 
let b =() => { return 1; } 
b() 
1 
a 
() => 1 
b 
() => { return 1; } 

は、これらが異なっているどのような状況はありますか?

+7

はい同じです。 –

+1

と{}を使用すると、体裁を複数行にすることはできますが、他の相違はありません。 – juvian

+0

関連:[中括弧なしの矢印機能](https://stackoverflow.com/questions/39629962/arrowfunction-without-curly-braces)、[中括弧in Arrow Functions](https://stackoverflow.com/questions/35440265/curly-brackets-in-function-functions)、[ES6矢印機能(角かっこ付き)](https://stackoverflow.com/questions/38730747/es6-あなたがマルチステートメントを意味するかどうかを確認してください。 – trincot

答えて

1

concise body arrow関数は暗黙的に値を返しますが、複数行の矢印関数の場合は明示的に値を返す必要があります。あなたのケースでは

は両方

+0

あなたが答える前に、あなたの専門用語をまっすぐにしてください。 「太い矢」という用語は、数年間使用されていません。また、それは "単一行"ではありません。それは「簡潔なボディ」です。 –

+0

@torazaburo「太った矢」という言葉が何年も使われていないことをどうやって知っていますか?メトリックはありますか? "single line"と同じです – alt255

+0

否定的なことを証明するのは難しいです。スペックまたはMDNの用語「太い矢印」への参照を探してください。 '{} '以外の形式の技術用語は完全にはっきりしています。それは「簡潔なボディ」です。簡潔な本体は、 '()=> 1 +(NEWLINE)2'のように、複数の行になる可能性があります。 –

2

一つの違いは、暗黙的なリターンの構文を使用して、オブジェクトリテラルを返すことはカッコ内にラップされるオブジェクトリテラルを必要とすることで、同じ最終結果を持っています。

var foo =() => { bar: "foobar" }; //This function returns undefined 
var foo =() => { return { bar: "foobar" }; }; //This function returns an object 
var foo =() => ({ bar: "foobar" }); //This function returns object 

私の知る限り、これは唯一の違いです。

+0

これが私が何かを通過した理由であるのだろうか...フィルターメソッドの間に...これはうまくいかなかった:.filter(x => {x == 'a'})しかし、このDID作業.filter(x => x == 'a')。これはあなたが言ったことと関係がありますか? – carinlynchin