2016-05-06 4 views
0

私はangle2-rxjs-chatアプリケーションong githubから学んでいます。Angular2の次のコード行で、代入部分はどのように機能しますか?

以下に示すように、スレッドが以前のコードのライン29上に定義されている
threads[message.thread.id] = threads[message.thread.id] || 
     message.thread; 

let threads: {[key: string]: Thread} = {}; 

その符号状態のコメントコードhereに下記のコードの行があります"私たちはacuuculatorのスレッドにメッセージのスレッドを格納する。私は代入演算子の両側に同じように、すなわちスレッド[message.thread.id]があるように、 。31行目のステートメントが

の場合

次に、値がマップ "スレッド"のキーに割り当てられているため、説明します。しかし、私はフルラインを理解していません。

答えて

0

これは、すでにthreads[message.thread.id]に値がある場合は保持し、そうでない場合はmeassage.threadに値を設定します。

||の前の部分がtruthy(ないnullundefinedfalse、...)then the part after値に評価された場合|| is not evaluated and the result from the part before || is returned otherwise the result from the expression after || `が返されます。あなたはまた、

if(!threads[message.thread.id]) { 
    threads[message.thread.id] = message.thread; 
} 
+0

として、それを書くことができ

はあなたの時間と返事をいただき、ありがとうございます。私はすでにこれまでに3つの段落で説明したことを理解しています。この部分を説明してください。 –

+0

しかし、オブジェクトがすでに存在しない場合、既存の値は保持されますが、コードはキーに値を割り当てる代わりにキーにキーを割り当てます。スレッド[message.thread.id] =スレッド[message.thread.id];代入演算子の両側にキーがあります。同じコードが代入演算子の左辺のキーをどのように表すことができますが、同じコードは代入演算子の右辺のそのキーに付けられた値を表しますか? –

+0

すでに存在する場合、その値はそれ自体に割り当てられます。 –

関連する問題