一元是否将变量设置为其初始值

Does unary set the variable to its initial value

提问人:Bader Iddeen Idrees 提问时间:12/15/2022 最后编辑:Bader Iddeen Idrees 更新时间:12/16/2022 访问量:39

问:

在计算了这段代码的结果之后,我想知道一元是否将我的变量设置为“uno”到其原始状态,如果是这样,负一元呢

let uno = 10, dos = "20", tres = 80;
console.log(++uno + +dos++ + +tres++ - +uno++);

我的结论是 103 的方程,即 11 + 21 + 81 - 10,但它似乎不是真的!

JavaScript 变量 unary-operator

评论

0赞 Diego D 12/16/2022
顺便说一句,变量标识符之后的一元运算符,在变量的值被考虑用于涉及其值的操作之后进行评估,如果放在之前,则将在之前进行计算++

答:

3赞 Barmar 12/16/2022 #1

一元运算符的优先级低于递增运算符。所以被视为 .在这种情况下,一元运算符是多余的,因为递增运算符首先将值转换为数字(递增字符串没有多大意义)。+dos+++(dos++)

由于您使用的是 on 和 的后递增运算符,因此这些子表达式的值是原始数值;请参阅 JavaScript i++ 与 ++i。所以你要加 和 ,而不是 和 。dostres20302131

当您在末尾减去时,这发生在 的增量之后。所以被减去的值是 ,而不是 。uno++++uno1110

整个事情实际上等同于:

let uno = 10, dos = "20", tres = 80;
let uno1 = ++uno; // uno1 = 11, uno = 11
let dos1 = dos++; // dos1 = 20, dos = 21
let tres1 = tres++; // tres1 = 80, tres = 81
let uno2 = uno++; // uno2 = 11, uno = 12
console.log(uno1 + dos1 + tres1 - uno2); // 11 + 20 + 80 - 11 = 100