数据类型转换

2019-07-06  本文已影响0人  没了提心吊胆的稗子

其他类型转换成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

上一篇下一篇

猜你喜欢

热点阅读