前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Javascript中的数据类型

Javascript中的数据类型

作者头像
江涛学编程
发布于 2020-07-29 09:24:25
发布于 2020-07-29 09:24:25
8270
举报
文章被收录于专栏:江涛的博客江涛的博客

什么是值类型?

所谓值类型,其实指的是原始数据类型,它和后面讲的原始数据类型、基本数据类型是同一个东西。在语义理解上,基本和原始似乎能搭的上边,而值似乎不沾边,所有这里就分开来讲。

值类型存储在栈内存中,当你进行拷贝操作,会得到一片新的内存地址,当你进行相关运算,它会改变当前数据段所存的地址,当进行相关函数定义,就会去内存中开辟有关变量的地址,直到这个函数运行结束,内存就会被相应的回收。

大致有这些值类型:Number、String、Boolean、Symbol、Null、Undefined、BigInt

什么是引用类型?

引用类型分堆内存和栈内存存储。引用类型的访问地址存在栈内存中,其指向堆内存的结构。就因为是这个模型,当你进行引用类型对象拷贝的时候,其实拷贝的是其栈内存的地址,所以当你操作这个引用类型对象,首先它找到栈内存的地址,然后在堆内存中进行修改,这就很好地说明了浅拷贝引用类型对象,操作其中一个对象会影响另一个对象,因为它拷贝的是栈内存的地址,指向的是同一个堆内存地址。

大致有这些引用类型:Object、Function、Array、RegExp、Date

什么是原始数据类型(基本数据类型)?

在Javascript中,有7种原始数据类型,原始数据类型的值是不可改变的。

Number、String、Boolean、Symbol、Null、Undefined、BigInt

Javascript的基本类型包装对象有哪些?

除了null和undefined外,其他的都有。String、Number、Boolean、BigInt、Symbol

如何判断Javascript的数据类型(数据类型检测)

typeof

typeof 操作符返回一个字符串,表示未经计算的操作数的类型。typeof可以判断Number、String、Boolean、Symbol、BigInt、Undefined、Object、Function。这里值得一提的就是typeof null === object, 什么鬼?一个基本数据类型等于一个引用类型。其实这个是JS语言设计上的问题,曾经也有ES修复提案被拒绝了,之所以产生这个结果是因为,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"

instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。像数组、函数、对象都可以用instanceOf来进行判断。

Javascript的数据类型是怎么确立的?

Javascript是一种弱类型的动态语言,也就是说,其定义的变量的类型的确立是在程序运行的时候,自动确立的。它是比较灵活的,你可以let a = 2020,程序运行的时候走到这一步会确立它是number类型,之后你又可以a = '2020',走到这一步它又是字符串类型。

写在最后

具体的相关测试用例这里就不展开了,有兴趣的同学可以看下楼下的地址。

关于typeof的相关测试用例:https://zhengjiangtao.cn/coding/interview/use_typeof.js

关于instanceof的相关测试用例:https://zhengjiangtao.cn/coding/interview/use_instanceof.js

项目地址: https://github.com/ataola/coding

参考文献

Javascript数据类型和数据结构(MDN): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures

原始数据(MDN): https://developer.mozilla.org/zh-CN/docs/Glossary/Primitive

typeof(MDN): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof

instanceof(MDN): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江涛学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Js获取数据类型
JavaScript有着七种基本类型String、Number、Boolean、Null、Undefined、Symbol、Object,前六种为基本数据类型,Object为引用类型。
WindRunnerMax
2020/08/27
9.5K0
假如易立竞问你如何判断 JavaScript 中的数据类型?
我们习惯把对象称为引用类型,当然还有很多特殊的引用类型,比如 Function、Array、RegExp、Math、Date、Error、Set、Map、各种定型数组 TypedArray 等。
童欧巴
2021/06/25
4990
JavaScript 的基本类型和引用类型
JavaScript 数据类型目前是有 8 种,在大的方向可以分为两种,一种是基本类型,另外一种是引用类型。
青年码农
2021/06/29
2.3K0
JS的数据类型及其检测
Javascript 有两种数据类型,分别是基本数据类型和引用数据类型。其中基本数据类型包括 Undefined、Null、Boolean、Number、String、Symbol (ES6 新增,表示独一无二的值),而引用数据类型统称为 Object 对象,主要包括对象、数组和函数。接下来我们分别看下两者的特点。
grain先森
2019/03/29
1.7K0
JS的数据类型及其检测
JavaScript之深拷贝和浅拷贝
工作中会经常遇到操作数组、对象的情况,你肯定会将原数组、对象进行‘备份’ 当真正对其操作时发现备份的也发生改变,此时你一脸懵逼,到时是为啥,不是已经备份了么,怎么备份的数组、对象也会发生变化。 如果你对拷贝原理理解的不透彻,此文或许能提供一点帮助。
Jack Chen
2018/12/13
5190
JavaScript之深拷贝和浅拷贝
JS进阶 你真的掌握变量和类型了吗
原文链接:https://mp.weixin.qq.com/s/Z0jnNJlfOrXHdNDb8CM-ng
mafeifan
2019/05/30
2.7K0
Javascript数据类型
ECMAScript 5的五种简单数据类型:Undefined、Null、Boolean、Number、String;
epoos
2022/06/06
1660
【JavaScript】简单数据类型 与 复杂数据类型 ① ( 堆内存和栈内存 | 简单数据类型内存存储 | 复杂数据类型内存存储 )
JavaScript 中 , " 简单数据类型 “ 又称为 ” 基本数据类型 " 或 " 值类型 " , 与 简单数据类型 相对的 " 复杂数据类型 “ 又称为 ” 引用类型 " ;
韩曙亮
2024/06/13
1400
【JavaScript】简单数据类型 与 复杂数据类型 ① ( 堆内存和栈内存 | 简单数据类型内存存储 | 复杂数据类型内存存储 )
js数据类型很简单,却也不简单
javascript的数据类型分为两大类,一类是原始类型(primitive type),一类是对象类型(object type)。
程序员白彬
2020/07/10
1.3K0
js数据类型很简单,却也不简单
JavaScript 数据类型
除了object其他都是基本类型,是的,null也是基本类型,但是有很多人把它当作对象类型,这其实是语言本身的一个bug。对null执行typeof null返回的结果是object。实际上,null本身就是基本类型。
Karl Du
2020/10/23
2110
js基础之数据类型和拷贝
了解数据类型前先说说栈(stack)和堆(heap) *** stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小也不一定会自动释放 ***
用户1974410
2022/09/20
3420
js基础之数据类型和拷贝
这一次,彻底理解JavaScript深拷贝
要理解JS中数据是如何存储的,就要先明白其内存空间的种类。下图就是JS的内存空间模型。
dellyoung
2020/10/04
1.1K0
这一次,彻底理解JavaScript深拷贝
Salesforce Javascript(三) 小结1
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions
Zero-Zhang
2020/10/10
5810
Salesforce Javascript(三) 小结1
【面试说】聊聊JavaScript中的数据类型
答:Javascript 中的数据类型包括原始类型和引用类型。其中原始类型包括 Null、Undefined、Boolean、Number、String、Symbol、BigInt。引用类型指的是 Object。
GopalFeng
2022/08/01
5660
【面试说】聊聊JavaScript中的数据类型
「JavaScript」内置对象与数据类型
请注意,本文编写于 2097 天前,最后修改于 172 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
4810
「JavaScript」内置对象与数据类型
【面试题解】JavaScript数据类型相关的六个面试题
本系列面试题旨在学会相关知识点,从而轻松应对面试题的各种形式,本文讲解了 JavaScript 中的一些常见面试题。
一尾流莺
2022/12/10
3060
9种数据类型,数据类型区别及判断数据类型方法
String,Number,null,undefined,Boolean  (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增)
子夜星辰
2023/10/17
4250
9种数据类型,数据类型区别及判断数据类型方法
JavaScript的数据类型及其检测
JavaScript有几种数据类型,如何检测数据类型?这是本文要讨论的话题,思维导图如下:
心莱科技雪雁
2019/06/15
7090
JavaScript的数据类型及其检测
JavaScript数据类型浅析
ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。
LonelySnowman
2023/01/15
4200
JavaScript数据类型浅析
初中级前端必须要知道的JS数据类型
计算机世界中定义的数据类型其实就是为了描述现实世界中存在的事实而定义的。比如我们用人来举例:
用户4456933
2021/06/01
1.5K0
初中级前端必须要知道的JS数据类型
相关推荐
Js获取数据类型
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文