Javascript短条件含义

rvp*_*noz 4 javascript conditional-statements

这个js代码意味着什么?

this.totals || (this.totals={});
Run Code Online (Sandbox Code Playgroud)

我想..

if(!this.totals) {
  this.totals = {}
}
Run Code Online (Sandbox Code Playgroud)

它是否正确?

win*_*wes 8

几乎 100%正确.当||遇到时,第一部分被评估,如果它是一个真值,则返回它.如果是第二部分评价了falsey值,其在这种情况下设置this.totals{}并返回评价{}.

  • 因为与Thilo在他的评论中指出的`if`语句不同,这是一个表达式,因此它返回一个结果.如果你有`var a = this.totals || (this.totals = {})``a`也等于`this.totals`.所以等价的陈述是`if(!this.totals){this.totals = {}; } var a = this.totals;` (3认同)