JavaScript计算逻辑异常咨询:预期结果与实际输出不符
JavaScript字符串拼接与数值运算优先级问题
问题描述
以下代码运行后输出£1696,但预期结果应为£112:
let output = 2 let cal = "£" + output * 8 + 96 console.log(cal)
问题原因
JavaScript的运算符优先级和自动类型转换导致了这个错误结果:
- 乘法
*优先级高于加法+,所以先执行output * 8得到数值16; - 随后
"£" + 16触发字符串拼接,数值16被转为字符串,得到"£16"; - 最后
"£16" + 96再次触发字符串拼接,数值96转为字符串,最终得到"£1696"。
解决方案
通过括号强制改变运算顺序,让所有数值运算先完成,再进行字符串拼接:
let output = 2 let cal = "£" + (output * 8 + 96) console.log(cal) // 输出£112
或者分步计算,逻辑更清晰:
let output = 2 let total = output * 8 + 96 // 先计算数值结果112 let cal = "£" + total // 再拼接字符串 console.log(cal) // 输出£112
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

