首先,我们来看这个例子:
例1:
1 |
var i = 1; |
2 |
var j = "1"; |
3 |
console.log(i+j); |
这个打印的结果是多少呢?我们来看,i是数字,j是字符串,两个相加,就字符串拼接,1旁边拼个1,结果就是11。
再来,我们换一下:
例2:
1 |
var i = 1; |
2 |
var j = 1; |
3 |
var m = "1"; |
4 |
console.log(i+j+m); |
这个结果是不是也是按照上面的算法,字符串拼接,然后结果是111呢?这当然也是字符串拼接,但结果却不是111;i与j相加就是数字相加,不需要字符串来拼接了,所以结果是21。
例3:
1 |
var i; |
2 |
var j; |
3 |
console.log(i-j); |
如上例子,当i与j两个都是变量,并没有定义类型时,我们该按照什么来计算呢?还是它的结果是underfined?我们在webstrom上运行一下,看到打印的结果是NaN。为什么呢?这就是js的运算,它自动把转化为数据类型,但又没有定义值,所以输出NaN。
我们来看一个更容易理解的例子:
例4:
1 |
var i = true; |
2 |
var j = false; |
3 |
console.log(i-j); |
这个按照变量自动转化成数据类型来计算,很容易得出结果是1。
例5:
1 |
var i = null; |
2 |
var j = NaN; |
3 |
console.log(i-j); |
这个例子就更容易看出它的运算规则,最后算出的结果是NaN。
通过以上那些例子,我们总结出一些规则:
1.若变量中有一个是字符串的,则进行字符串拼接,如例1;
2.若是数字的,则进行四则运算,如例2;
3.若没有字符串,也没有数字,如例3、例4、例5,就会自动转化为数据类型,然后在进行计算!
本文出自 “断崖逐梦” 博客,请务必保留此出处http://suxiaomeng.blog.51cto.com/4505377/1408608