2017-05-21 4 views
0

私が使った限り、es6;私は私の質問は、複数の条件が関数であるならば、我々は条件内のリターンを書くために必要なのですかそれはその仕事をするである。この中で、我々はは、関数内に条件がある場合は、 `return`リテラルを追加する必要があります

.then((res) => res.body } // equivalent to return res.body 

ようreturnリテラルを省略することができることを知って来ますか?

.then((res) => { 
    if (some_codition) { 
     res.send(); 
    } else { 
     if (other_condition) 
      res.status(200).json(user); 
     else 
      res.status(404).json(user); 
    } 
}) 

意志作業上記(機能復帰せずに実行することを意味)または私はベストプラクティスとしてreturnを追加する必要がありますか?

+1

私は、 'return'を追加することは常に1つのステートメントだけを持つ関数を除いて、良い方法であると言います。これは可読性の問題です。メソッドが何かを返すことはすぐに明らかになるはずです。 – Sulthan

+0

「*それは仕事をしますか?」とはどういう意味ですか? – Bergi

+1

矢印関数は、簡潔な本体構文(単一の式で構成されている)を使用する場合にのみ暗黙的に何かを返します。ボディに*ブロック*( '{...}')を使うとすぐに、それは単なる普通の関数です。 – Bergi

答えて

2

はい、手動で値を返すために持っている...ということしてみてください。そうしないとundefinedが返されます。

連鎖が許可されているため、常にPromise内で値を返すことをお勧めします。あなたが何も返していない(未定義の)場合、約束のチェーンはその点から内側に続くことはありません。

この特定のケースでは、Webサーバーの応答fnである「副作用」機能を呼び出しているため、この特定のケースでうまくいく可能性があります。

-1
.then((res) => (somecodition) ? 
         res.send() 
        : 
         res.status(200).json(user) 
    ) 

+0

私は代わりの方法 –

+0

を探していません=> {}を使用する場合、{}の中で戻り値 – UXDart

+0

を使用する必要がありますが、return文以外の関数に本体がない場合は戻りません。 –

0

違いは、矢印の後に中かっこがあるかどうかです。

.then(res => res.x) // Works 
.then(res => {return res.x;}) // Works 
.then(res => {res.x;}) // Your function returns undefined. 
関連する問題