JS 有哪些数据类型,如何判断这些数据类型 ?
最新标准定义了8种数据类型,7种基本数据类型,1中引用数据类型
基本数据类型:String,Number,Boolean,undefined,null,Symbol(符号),BigInt(数值类型,表示任意精度的整数)
引用数据类型:Object
它们的区别是在内存中的存储方式不同
基本数据类型是存储在栈中的简单数据段,占据空间小,被频繁使用
引用数据类型是存储在堆内存中,占据空间大;它在栈中存储有指针,该指针指向其在堆中的实体,当需要查找时,会检索栈中的指针,取得地址后从堆中获取实体
检测数据类型的4种方式:
- typeof----------typeof 变量;
typeof的返回值类型是字符串
当其判断基本数据类型时,null会返回'Object';其它类型可正确判断
当其判断引用数据类型时,判断函数会输出 'function';其它输出Object
- instanceof----------- obj1 instranceof obj2; //obj1是否属于obj2的实例
判断两个对象是否属于实例关系,通过这种关系判断是否属于某一数据类型(但不能判断具体属于哪种数据类型)
返回值为布尔值,是则true,否则false
- constructor----------true.constructor===Boolean;//true
当一个函数F被定义时.js会为其添加prototype原型,在prototype上添加一个constructor属性,并让其指向F;当执行const f=new F()时;F是构造函数,f是F的实例对象,此时F原型上constructor传递 到f上,因此f.__proto__.constructor===F
简写成f.constructor ===
F;
那么从此过程看构造函数F就是 f (实例)的类型;但constructor是不稳定的,因为可以重写prototype,那么此时原有的constructor会丢失,在没有重新指定其引用前,constructor默认为object
- Object.prototype.toString.call()----------Object.prototype.toString.call(1);//[object Number ]
toString是object的原型方法,返回值 [object type] ,其中type就是对象的类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类