JS运算符-加号运算符

JavaScript07

JS运算符-加号运算符,第1张

加法运算符(+)是最常见的运算符,用来求两个数值的和。

在两个操作数都是数字的时候,会做加法运算

2+4

两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接

"2"+"4" 拼接为"24".

2+"4" 拼接为"24".

在参数有对象的情况下会调用其valueOf或toString

优先使用valueof方法

如果运算子是一个Date对象的实例,那么会优先执行toString方法。

空对象拼接字符会显示[object Object]+字符

在只有一个字符串参数的时候会尝试将其转换为数字

+"3000" //3000

非数字字符转换为NaN

在只有一个数字参数的时候返回其正数值

var i = 1

var j = 2

alert(i+0+j) 结果 alert:3.

现在解答为什么要加一个0.因为在js里面,如果你直接写+号的话,JS会以为你是把两个字符串相加,就像上面的,结果会alert(12),而加上一个0的话,会让它知道这个是在做一个加法运算而不是拼接字符串。当然

求和就跟数学一样,直接相加就可以了啊。

我猜你的问题出在获取span的内容上,如果你直接用 a.innerHTML + b.innerHTML ,得到的不是21,而是1011。

原因并不是因为 js 中不能直接进行加法运算,而是因为数据类型导致。

要记住一点:所有通过标签获取到的内容,都是字符串。

也就是说,通过标签的, value, innerHTML 等得到的值,都是一个字符串值,而js中,用加号来对字符串进行求和,实际是做字符串连接。比如 '1' + '2' ,得到的是 '12',而不是3. 因为加号左右都是字符串。在js 中,只要加号的任何一边的值是字符串,最终都是进行字符串连接,而不是求和。

想要实现求和,就需要把字符串变成数字,再使用加号,在js中,将字符串变成数字最简单的做法是乘以1,比如 '1'*1 + '2'*1 ,结果就是3了。这个属于JS的隐式类型转换,如果你学过这个知识点,自然知道是什么意思 ,如果还没学过,那就先知道这个技巧就行。

所以你上面的效果,要实现求和,只需要这样:

a.innerHTML * 1 + b.innerHTML * 1, 就可以实现求和啦。