只有基本类型的数据下能进行运算
所有引用类型的数据,需要运算时候;先需要转化为基本类型数据; 再运算
所有引用类型数据只能转化为字符串.最后再由字符串转为其他类型
js数据类型类型分为基本数据类型和复合数据类型(引用数据类型)
基本数据类型:String Boolean Number Null Undefined
复合数据类型(引用数据类型):数组Array 对象Object 函数Function
字符串与Number比较
先把字符串转化为number 再进行比较 。 有字符串,+属于拼接
var res = ('han' + 'll') - true + 1
//转化过程:
// res = ('hanll') -1 + 1 // 首先将字符串拼接 true转化成number
// res = NAN - 1 + 1; //字符串转number 不是number 所以返回NaN
//NaN与任何数比较都是NaN
console.log(res) //NaN
var res1 = ('han'+'ll') + true + 1
//转化过程:
// res = ('hanll') +true + 1 // 在这边 +都是拼接
// res = hanll + true + 1;
console.log(res) //hanlltrue1
布尔与Number运算
布尔和数字进行比较时,字符串转换成数字,二者再比较
var res = true + false
console.log(res) //1+0 =1
数组和对象运算
空数组先转化为空字符串 再转化为0
有一个数字的数组 [‘1’] --> num
多个数字或者非数字先转化为字符串 然后 NaN
空对象转化成number是 NaN
var res = ['1'] - {} // NaN 1-NaN
console.log(res) //NaN
数组与Number运算
var res1 = ['1'] - 2 //1 -2
cosole.log(res1) //-1
var res2 = [] - 1; //0-1 =-1
cosole.log(res2) //-1
对象与字符串运算
在默认隐式转化中;所有的对象都转化为再[object object]
var obj = {
name:'小明',
age:'12',
}
var res = obj+ '小红'
console.log(res) //[object Object]小红
var res = {}+'小红' //[object Object]小红 + 拼接 不是运算