1、基本数据类型
- number、string、boolean、undefined、null
2、引用数据类型
- object:普通对象{}、数组对象[]、正则对象/^$/、日期对象new Date() 、Math对象 、实例对象……
- 数组是特殊的对象
- 对象的属性名可以是基本类型值,不可以是引用类型值,但是可以把引用类型存在一个变量中,默认会转换为字符串进行处理
- 例如:
let obj = { 0: 100, true: '言晓落', {x:100}: 200 } // 语法会报错
但是
let a = { x:200 }
let b = function fn(){}
let obj = { 0:100, true: '言晓落' }
obj[a] = 200
obj[b] = 300
是可以的
obj为{ 0: 100, true: "言晓落", [object Object]: 200, function fn(){}: 300 }
- obj[0] === obj['0']
3、ES6新增
- symbol拥有唯一值
let a = {}, b = '1', c = 1;
a[b] = '123';
a[c] = '234';
console.log(a[b]) // '234'
console.log(a[b] === a[c]) // true
let a = {}, b = Symbol('1'), c = Symbol('1');
a[b] = '123';
a[c] = '234';
console.log(a[b]) // '123'
console.log(a[b] === a[c]) // false
4、typeof检测数据类型
- 返回6种,其中typeof(null) => // object
- console.log(typeof NaN) => // 'number'
- NaN和谁都不相等,包括自身
5、isNaN检测是否为有效数字
- 调用Number()做隐式转换
6、ES6中Number.isNaN()、isNaN()
isNaN(NaN) // true
isNaN("NaN") // true
Number.isNaN(NaN) // true
Number.isNaN("NaN") // false