Как часть назначения работает в следующей строке кода в Angular2?

Я учусь у проекта angular2-rxjs-chat application ong github. В коде здесь есть строка кода, приведенная ниже:

threads[message.thread.id] = threads[message.thread.id] ||
        message.thread;

где потоки ранее были определены в строке 29 в коде, как показано ниже:

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

В комментариях в коде говорится ,что » сохраните поток сообщения в нашем acuuculator ‘threads’. Мне нужно немного объяснить, как работает назначение в строке 31, поскольку с обеих сторон оператора назначения у нас есть одно и то же, т. е. потоки[сообщение.нить.id]. Если оператор в строке 31 был похож

(threads[message.thread.id] = message.thread;) 

тогда я бы объяснил это как значение, присваиваемое ключу в карте «потоки». Но я не понимаю всю линию.

1 ответ

  1. Это означает, что если threads[message.thread.id]уже имеет значение, то сохранить его, в противном случае установите значение meassage.thread.

    Если предыдущая часть ||имеет значение true (не null,undefined,false,…)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;
    }