简单数据类型(存在栈里)
number
string
boolean
null
undefined
symbol : 唯一值,匿名
复杂/引用数据类型(存在堆里)
object : array,json,element(标签,元素,dom节点),elements(多个标签),function
typeof 类型检测
typeof a
传值 :简单数据类型,
传址 : 复杂数据类型 (始终是一个对象,只不过多了一个变量名,传的是堆内的存储地址),对象和对象不相等,即便是及其一致(因为地址不同)
强制数据类型转换
为什么要转换数据类型:
var a = 12
var b = '11'
var c = parseInt(b) // 把b转换为number
string 转换为 number
parseInt :转整数(数字取整)parseInt(123.4) // 123
parseInt(123a11) // 123
parseInt : 从左往右依次转换,当遇到非数字字符时停止转换,只保留前面,当首位字符非数字,结果为NaN
parseInt(a123) // NaN 转换失败
parseFloat : 保留小数,规则与parseInt一致
Number(12q.33) // NaN
Number 只要字符串内含有非数字字符,结果就为NaN,只能转纯数字型
var bool = false
Number(bool) // 1
var arr = [1,2,3]
Number(arr) // NaN 因为有逗号
var arr1 = [10]
Number(arr1) //10
var arr2 = []
Number(arr2) // 0
Number(null) //0
NaN 和 isNaN
NaN not a number 一个不是数字的数字,但不是一个具体数字,不等于任何值,包括自己
isNaN(NaN) // true
isNaN用来判断数字是不是NaN
当不确定数字是否转换成功时,用isNaN来判断,它只会返回两个值,true,false
infinity:正无穷
-infinity:负无穷