提问人:Keetch 提问时间:1/12/2022 更新时间:1/12/2022 访问量:66
为什么在三元运算符的帮助下进行赋值在 JS 中无法按预期工作?
Why does assignment with help from ternary operator doesn't work as expected in JS?
问:
var a = 0;
var param = 'add';
while(a < 50){
console.log(a); //prints out values from 0 to 49
if(param === 'add'){
a = a + 1;
}else{
a = a - 1;
}
}
虽然非常简单并完成其工作,但我想使此代码更短
while(a < 50){
console.log(a);
a = a + (param === 'add')? 1 : -1;
}
但 a 永远不会增长并保持 1.谁能解释这种行为?
答:
1赞
www.admiraalit.nl
1/12/2022
#1
表达式的计算结果为
a = (a + (param === 'add')) ? 1 : -1;
归结为
a = 1;
你可以通过写
a = a + ((param === 'add') ? 1 : -1);
甚至更短:
a += (param === 'add') ? 1 : -1;
评论
2赞
Teemu
1/12/2022
为什么不只是..?a += param === 'add' ? 1 : -1;
0赞
www.admiraalit.nl
1/12/2022
当然,我已经将此附加到我的答案中。
评论
a = a + ((param === 'add') ? 1 : -1);
?
a = a + 1
a++
a = a - 1
a--
prints out values from 0 to 49 OR from 0 to -infinity