2017-01-04 3 views
0

私はインターネット上で次の2つのコードを見てきましたが、実際にどのように解析され実行されているのか分かりません。 BTW私はES6の新人です。与えられたJSコードでどのようにオブジェクトプロパティにアクセスするのですか?

return getUsername().then(function(username){return getUser(username);}).then(function (user){}); 

それともES6で、いくつかの異なる意味を持っています:

return getUsername() 
.then(function (username) { 
    return getUser(username); 
}) 
.then(function (user) { 
}); 

は、上記のようなコードを解釈することが正しいですか?以下で同様

new Q(value) 
.then(function(/*Success handler*/){}, function(/*Failure handler*/){}) 

それはとして解釈されるべきである:

new Q(value).then(function(/*Success handler*/){},function(/*Failure handler*/){}) 
+0

は、JavaScriptでは意味がありません。そうです、彼らは同じです。 –

答えて

1

あなたの解釈は正しいですが、このコーディングスタイルはES6とは関係ありません。これはJS構文の一部です。

開発者は、ターゲットオブジェクトに起こっていることをより明確にするために、チェーンメソッドを別々の行に配置することがよくあります。

すると、メソッドチェーンについては、この記事を読んで、別の行に連鎖した方法の例については、記事の下部を参照してください:一般的な、空白で https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html

+0

2番目のもの(新しいQ(値)...)でも正しいですか? – Utkarsh

+0

はい、2番目の場合でも – haltersweb

2

あなたの「解釈」は、単にラインの除去フィードと白の空間です。 結果は機能的に、より読みやすい複数行バージョンと同じです。

+0

私の解釈は正しいですか?なぜならJSのような複数行のコードがどのように解析されているのか、私は本当に理解していないからです。返信ありがとうbtw :) – Utkarsh

+0

あなたの解釈は正しいです。 – haltersweb

関連する問題