我们都知道js的基本类型有undefined,null,boolean,number,string;
当我们在进行基本数据类型的运算和比较时数据类型会根据运算符号和左右两边值的不同作如下转换:
1. string(- , * , /)string
"a"-"b"=NaN; "a"*"b"=NaN; "a"/"b"=NaN;
****当字符串为数字时上述运算符会把它先转换成数字再进行计算
"1"-"2"=-1; "1"*"2"=-1; "1"/"2"=0.5;
2. number(+,- , * , /)number
在number之间计算时所有运算符都会遵循正常的数学算法进行计算
3. string(- , * , /)number
"a"-1=NaN; "a"*1=NaN; "a"/1=NaN;
"1"-2=-1; "1"*2=-1; "1"/2=0.5;
有时会认为把数据类型换下位置会出现不同结果吗会不会在进行计算时候运算符会根据前面的运算类型去改变后面的类型那?
1-"a"=NaN;
****因为在进行上述3种运算符运算时是不会像+运算符一样会对类型进行相应转换后再进行计算。
原文:http://www.cnblogs.com/pandaer/p/5296706.html