条件运算符,添加后检查结果的简化方法

时间:2016-02-23 23:17:38

标签: javascript conditional

我正在为一个朋友制作游戏,并且在该类的统计建筑部分我有一个部分,根据类(战士,法师等)为统计数据添加基本修饰符但是最终的统计数据不能小于零。

目前有这样的:

this.stats[i] += type[i];
if(this.stats[i] < 0) {
    this.stats[i] = 0;
}

哪个好,有点不情愿,但我想知道是否有可能在一行中做到这一点。我对此表示怀疑,但我很想知道自己是否错了。

类似的东西:

this.stats[i] += type[i] < 0 ? // etc;

但我知道只有在将变量添加到当前int之前才会运行条件。此外,是的,仅使用整数,没有浮点数或字符串或其他任何东西,在其他地方处理。

2 个答案:

答案 0 :(得分:4)

+=之类的作业会返回指定的值。如果运算符优先级不是您想要的,只需添加括号。

if((this.stats[i] += type[i]) < 0) this.stats[i] = 0;

但可能Math.max更清楚:

this.stats[i] = Math.max(0, this.stats[i] + type[i]);

答案 1 :(得分:1)

你可以写一行,但这不会很简单,因为你必须检查this.stats[i] + type[i]的总和

this.stats[i] = (this.stats[i] + type[i]) < 0 ? 0 : (this.stats[i] + type[i]).

所以,你可以在这里添加变量

var sum = this.stats[i] + type[i];
this.stats[i] = sum < 0 ? 0 : sum;