JavaScript Var变量求和异常:输入数值出现字符串拼接而非相加
嘿,我来帮你搞定这两个问题!
问题解答
一、关于两个var变量数值相加的问题
先澄清个小细节:在JavaScript里,var是用来声明变量的关键字,不是数值类型哦。如果你的两个变量存储的都是数值类型的值,直接用+运算符就能完成相加;但如果变量里存的是字符串形式的数字(比如"10"),就得先把它们转换成数值类型再相加,不然+会变成字符串拼接操作。
举个直观的例子:
var a = 5; var b = 10; console.log(a + b); // 输出15,正常数值相加 var c = "5"; var d = "10"; console.log(Number(c) + Number(d)); // 先转成数值再相加,输出15
二、解决prompt输入后求和变成字符串拼接的问题
你遇到的102030这个结果,核心原因是:prompt()函数返回的是字符串类型的值——哪怕你输入的是数字,它也会默认当成字符串处理。所以直接用+的话,就会执行字符串拼接,而不是数值相加。
修正方法很简单,把每个prompt()的结果转换成数值类型就行,常用的转换方式有三种:
- 使用
Number()函数(通用转换,支持整数和小数) - 使用
parseInt()(适合处理整数输入) - 使用
parseFloat()(适合处理带小数的输入)
给你修正后的代码:
var num1, num2, num3; // 把输入的字符串转成数值类型 num1 = Number(prompt("Enter num1:")); num2 = Number(prompt("Enter num2:")); num3 = Number(prompt("Enter num3:")); var sum = num1 + num2 + num3; document.write(sum); alert(sum);
现在输入10、20、30,输出就会是预期的60啦!
另外提个小建议:现在JavaScript里更推荐用let或者const来声明变量,它们的作用域规则比var更清晰,能避免不少潜在问题~
内容的提问来源于stack exchange,提问作者user11234442
相关产品推荐
相关产品推荐

