繁体   English   中英

为什么在三元运算符的帮助下赋值在 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. 任何人都可以解释这种行为吗?

表达式被评估为

a = (a + (param === 'add')) ? 1 : -1;

归结为

a = 1;

你可以通过写来解决这个问题

a = a + ((param === 'add') ? 1 : -1);

甚至更短:

a += (param === 'add') ? 1 : -1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM