数据类型有哪些?区别?如何判断数据类型?
数据类型有哪些?
- 数据类型主要分为2种:原始数据类型,引用数据类型。
- 引用数据类型:
Object,Array,Function
- 原始数据类型:
String,Number,Boolean,Null,Undefined
区别
- 原始数据类型直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
- 引用数据类型存储在堆中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
let c = 15;
let b = c
c = 50
console.log(b)
console.log(c)
let object1 = {
name:'Bingeh',
age:18
};
let object2 = object1;
object1.age = 20;
console.log(object2);
如何判断数据类型?
console.log(typeof 2)
console.log(typeof true)
console.log(typeof 'str')
console.log(typeof [])
console.log(typeof function () {})
console.log(typeof {})
console.log(typeof undefined)
console.log(typeof null)
console.log((2 as any) instanceof Number)
console.log((true as any) instanceof Boolean)
console.log(('str' as any) instanceof String)
console.log([] instanceof Array)
console.log(function () {} instanceof Function)
console.log({} instanceof Object)
console.log((2).constructor === Number)
console.log(true.constructor === Boolean)
console.log('str'.constructor === String)
console.log([].constructor === Array)
console.log(function () {}.constructor === Function)
console.log({}.constructor === Object)
const a = Object.prototype.toString
console.log(a.call(2))
console.log(a.call(true))
console.log(a.call('str'))
console.log(a.call([]))
console.log(a.call(function () {}))
console.log(a.call({}))
console.log(a.call(undefined))
console.log(a.call(null))