提问人:Bader Iddeen Idrees 提问时间:12/15/2022 最后编辑:Bader Iddeen Idrees 更新时间:12/16/2022 访问量:39
一元是否将变量设置为其初始值
Does unary set the variable to its initial value
问:
在计算了这段代码的结果之后,我想知道一元是否将我的变量设置为“uno”到其原始状态,如果是这样,负一元呢
let uno = 10, dos = "20", tres = 80;
console.log(++uno + +dos++ + +tres++ - +uno++);
我的结论是 103 的方程,即 11 + 21 + 81 - 10,但它似乎不是真的!
答:
3赞
Barmar
12/16/2022
#1
一元运算符的优先级低于递增运算符。所以被视为 .在这种情况下,一元运算符是多余的,因为递增运算符首先将值转换为数字(递增字符串没有多大意义)。+dos++
+(dos++)
由于您使用的是 on 和 的后递增运算符,因此这些子表达式的值是原始数值;请参阅 JavaScript i++ 与 ++i。所以你要加 和 ,而不是 和 。dos
tres
20
30
21
31
当您在末尾减去时,这发生在 的增量之后。所以被减去的值是 ,而不是 。uno++
++uno
11
10
整个事情实际上等同于:
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
评论
++