首先,来看这个例子:html
例1:web
var i = 1; var j = "1"; console.log(i+j);
这个打印的结果是多少呢?咱们来看,i是数字,j是字符串,两个相加,就字符串拼接,1旁边拼个1,结果就是11。算法
再来,咱们换一下:code
例2:htm
var i = 1; var j = 1; var m = "1"; console.log(i+j+m);
这个结果是否是也是按照上面的算法,字符串拼接,而后结果是111呢?这固然也是字符串拼接,但结果却不是111;i与j相加就是数字相加,不须要字符串来拼接了,因此结果是21。字符串
例3:console
var i; var j; console.log(i-j);
如上例子,当i与j两个都是变量,并无定义类型时,咱们该按照什么来计算呢?仍是它的结果是underfined?咱们在webstrom上运行一下,看到打印的结果是NaN。为何呢?这就是js的运算,它自动把转化为数据类型,但又没有定义值,因此输出NaN。class
咱们来看一个更容易理解的例子:
变量
例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.若没有字符串,也没有数字,如例三、例四、例5,就会自动转化为数据类型,而后在进行计算!