JS 的数据类型
- 基本数据类型
js有8种基本数据类型,分别为:undefined
、number
、Object
、null
、Symbol
、Boolean
、String
、BigInt
;
其中Symbol
和BigInt
是ES6新增的数据类型:
● Symobol代表独一无二的值,可以用来代表对象唯一的属性名
● BigInt可以表示任意大小的整数。
- 判断
● typeof可以判断值类型和函数,但对Number、Array、Object、还有null都会返回Object类型
console.log(typeof 12)
console.log(typeof '12')
console.log(typeof function () { })
console.log(typeof (() => { }))
console.log(typeof false)
console.log(typeof null)
console.log(typeof { name: '李四' })
console.log(typeof [1, 2, 3])
● instanceof 可以判断对象类型,他的原理数顺着原型链去寻找,找到就会返回true
const arr = [1, 2, 3, 4]
const obj = { a: 1, b: 2 }
console.log(arr instanceof Array) // true
// 因为Array.prototype 是Object 所以也返回true
console.log(arr instanceof Object) // true
console.log(obj instanceof Object) // true
● Object.prototype.toString.call() 可以轻松分辨原始数据类型
console.log(Object.prototype.toString.call(1))
console.log(Object.prototype.toString.call(NaN)) // Not a Number 所以是Number类型
console.log(Object.prototype.toString.call('1'))
console.log(Object.prototype.toString.call(false))
console.log(Object.prototype.toString.call(undefined))
console.log(Object.prototype.toString.call({}))
console.log(Object.prototype.toString.call([]))
console.log(Object.prototype.toString.call(null))
console.log(Object.prototype.toString.call(function () { }))