其他类型转换成number类型
isNaN、Number、parseInt、parseFloat
进行加减乘除数学运算的时候:1+null
boolean : true -> 1 false - > 0
string : ' ' -> 0 '12' -> 12 '12px' -> 12/NaN '前端' -> NaN
null -> 0 undefined -> NaN
object : {}, /^$/, function(){} -> NaN [] -> 0 [12] -> 12 [12, 13] -> NaN
// 引用数据类型转化数字,会先用toString转化为字符串,再调用Number把字符串转化为数字
JS中的加减乘除
+、-、*、/
除了加法有特殊性,其他都只在非数字类型的时候调用Number再运算
+号的特殊性在于当遇到字符串的时候,会进行字符串拼接而不是加法运算
其他类型转换成string类型
toString方法
对象的toString方法转化为[object, Object],可用来做数据类型转换
其余都是直接用单/双引号包起来,null、undefined也有toString方法,但不可用
其他类型转换成布尔类型
Boolean、!、!!、条件判断语句中
只有0、NAN、null、unfinished、''
转换成false,其余都是true
if(3+'3px'){
// 条件成立 3+‘3px’='33px'
}
if(3-'3px'){
// 条件不成立 3-‘3px’=NaN
}
==进行比较
左右两边数据类型不相同,浏览器会默认转换为相同类型(一般为number类型)再比较,null和undefined例外,他俩跟其他任何值都不相等
===
不会转换类型
[] == [] // false 左边有一个自己的地址,右边也有,两个地址不一样
// 对象和对象比较时,比较的是空间地址,不是相同的空间,结果就是false
[] == 0 // true 对象和数字比较会把对象转化为数字
({}) == NaN // false NaN 和自己都不相等
[] == '' // true 把两边都转化为数字0了 对象和字符串会把两边都转化成数字
[] == true // false []->0 true->1 对象和布尔会把两边都转化成数字
![] == true // false ![] -> false ==优先级最低
[] == false // true [] -> 0 false -> 0
null == null // true
null == undefined // true
null === undefined // false
null == 0 // false
网友评论