JavaScript中+号拼接变量而非求和 输入三个1得到111而非3问题
问题原因
prompt() 方法的返回值默认是字符串类型,即便用户输入的是纯数字,拿到的结果也是字符串格式的数值。JavaScript 中的+运算符只要存在字符串类型的操作数,就会优先执行字符串拼接逻辑,所以三个字符串类型的"1"相加最终得到的是"111",而非数值求和结果3。
解决方案
可以在拿到prompt返回值之后先转成数值类型再做加法运算,常用的转换方法有以下几种:
- 方法1:使用
Number()显式转换,兼容整数、小数场景
x = Number(prompt("Enter first Number")); y = Number(prompt("Enter second Number")); z = Number(prompt("Enter third Number")); p = x + y + z;
- 方法2:使用一元加号运算符隐式转换,写法更简洁,效果和
Number()一致
x = +prompt("Enter first Number"); y = +prompt("Enter second Number"); z = +prompt("Enter third Number"); p = x + y + z;
- 方法3:仅需要整数的场景可以用
parseInt(),需要保留小数的场景用parseFloat()
// 十进制整数转换示例,第二个参数10指定按十进制解析,避免部分特殊场景解析异常 x = parseInt(prompt("Enter first Number"), 10); y = parseInt(prompt("Enter second Number"), 10); z = parseInt(prompt("Enter third Number"), 10); p = x + y + z;
注意:如果用户输入非数字内容,上述转换方法会得到
NaN,可以额外通过isNaN()判断做异常输入的容错处理。
内容的提问来源于stack exchange,提问作者why_tf_you_do_tis
相关产品推荐
相关产品推荐

