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