2016-05-11 2 views
4

Что означает этот код js?Javascript short condition Значение

this.totals || (this.totals={}); 

я полагаю ..

if(!this.totals) { 
    this.totals = {} 
} 

это правильно?

+0

'if (typeof this.totals ==" undefined ") {' было бы лучше. Потому что 'false' /' 0' может нарушить условие. –

+0

Почти правильно. Все это выражение, а также оценивает (новое значение) 'this.totals'. – Thilo

+1

@Thilo: Не забывайте о запятой в конце :-) – Bergi

ответ

8

Вы почти 100% правильный. Когда встречается ||, первая часть вычисляется, и если это истинное значение, оно возвращается. Если это значение ложности, оценивается вторая часть, которая в этом случае устанавливает this.totals в {} и возвращает оценку, {}.

+1

Почему только «* почти * 100%»? – Bergi

+3

Потому что в отличие от оператора 'if', как указал Тило в своем комментарии, это выражение, поэтому оно возвращает результат. Если у вас есть 'var a = this.totals || (this.totals = {}) '' a' будет равно 'this.totals'. Таким образом, эквивалентный оператор будет 'if (! This.totals) {this.totals = {}; } var a = this.totals; ' – winhowes

+0

Но с'; 'в конце, это выражение * statement * :-) – Bergi