为什么输出是 16 而不是 11?
Why is the output 16 and not 11?
我正在学习 javascript 并且遇到了以下示例,
let n = 2;
n *= 3 + 5;
console.log( n );
因为我们在表达式中使用了“*=”,所以我认为表达式应该是 n = n * 3+5。如果表达式是 n = n * 3+5 那么我们不应该得到 11 吗?我得到 16 作为答案。有人可以解释为什么答案是 16 而不是 11 吗?
因为它遵循操作顺序。 +
比 *=
具有更高的优先级,所以如果我们在语句中添加括号以使其更清楚,它会是这样的:
let n = 2;
n *= (3 + 5)
// which means n = n * (3 + 5)
// which is n = n * 8
嗯,
第二行有一个隐藏的括号,这意味着它必须看起来像这样
n*=(3+5) >> 8 然后 16
它基于优先级和顺序
- /,*,% ---> 从左到右计算。
2.+ ,- ---> 从左到右计算
- +=,-=,*=,/=,%=,&=,^=,|=,>>=,<<= --->从右到左计算
我正在学习 javascript 并且遇到了以下示例,
let n = 2;
n *= 3 + 5;
console.log( n );
因为我们在表达式中使用了“*=”,所以我认为表达式应该是 n = n * 3+5。如果表达式是 n = n * 3+5 那么我们不应该得到 11 吗?我得到 16 作为答案。有人可以解释为什么答案是 16 而不是 11 吗?
因为它遵循操作顺序。 +
比 *=
具有更高的优先级,所以如果我们在语句中添加括号以使其更清楚,它会是这样的:
let n = 2;
n *= (3 + 5)
// which means n = n * (3 + 5)
// which is n = n * 8
嗯, 第二行有一个隐藏的括号,这意味着它必须看起来像这样 n*=(3+5) >> 8 然后 16
它基于优先级和顺序
- /,*,% ---> 从左到右计算。
2.+ ,- ---> 从左到右计算
- +=,-=,*=,/=,%=,&=,^=,|=,>>=,<<= --->从右到左计算