课程
/前端开发
/JavaScript
/JavaScript入门篇
var x,y,z; x = "7"; y = "3"; z = "2"; document.write(x+y); 为什么输出是73,而其他运算-,*,/都是正确的
2017-09-07
源自:JavaScript入门篇 1-7
正在回答
把双引号去掉就是数字运算了。有双引号7和3都是字符型的,他们用+连接 ,相当于2个字符输出,而没有运算。
JavaScript 变量有很多种类型,但是现在,我们只关注数字和字符串。
当您向变量分配文本值时,应该用双引号或单引号包围这个值。
当您向变量赋的值是数值时,不要使用引号。如果您用引号包围数值,该值会被作为文本来处理。
也就是,当 x="7",我们认为这是字符串,当 x=7时,我们认为这是数字。
“+”在JavaScript中有点特殊,如果是在数字之间则是运算,如果是字符则是拼接,其它-*/则会把字符串转变成数值进行运算。
你这里把x,y,z设成字符了,所以+法时则显示为73,其它时候正常。
我找到的资料里是这样解决的,document.write(x*1+y*1+z*1); 因为加法运算被默认为字符串相加。
那么,为什么其他运算方法没有默认为字符串间的运算? 有没有更简单的方法?
举报
JavaScript做为一名Web工程师的必备技术,本教程让您快速入门
3 回答运算的疑惑
2 回答赋值运算符
2 回答数学帮你运算了?
1 回答js 数字排序 运算逻辑
3 回答为什么在function运行以后var sum不运算?