JavaScript 数据类型
基本数据类型
- Undefined
- Null
- Boolean
- Number
- String
- Symbol 更新 把这个忘了
- bigInt
基本数据类型直接存放在变量栈
中
复杂数据类型
- Object
复杂数据类型栈空间里存放的是地址,真正的对象实例存放在堆空间
中
typeof 操作符
确定变量的数据类型的方法
js
console.log(typeof 'hello world') // string
console.log(typeof 100) // number
console.log(typeof undefined) // undefined
console.log(typeof null) // object 因为逻辑上讲null值表示一个空对象指针
1
2
3
4
2
3
4
TIP
在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。The history of “typeof null”
曾有一个 ECMAScript 的修复提案(通过选择性加入的方式),但被拒绝了。该提案会导致 typeof null === 'null'。
类型转换
在转换为数值时 null 会被隐式转换为 0,而 undefined 会被转换为 NaN
当不同类型的变量相加减时
js
console.log(1 + '2') // 12
console.log(1 + null) // 1
console.log(1 + true) // 2
console.log(100 + {}) // 100[object Object]
1
2
3
4
2
3
4
== 判断时的类型转换
js
console.log(NaN == NaN) // false
console.log(true == 1) // true
console.log(true == 2) // false
console.log(true == ['1']) // true
console.log(undefined == null) // true
console.log([] == ![]) // true
console.log([undefined] == false) // true
1
2
3
4
5
6
7
2
3
4
5
6
7