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

Javascript中的数据类型

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

什么是值类型?

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

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

大致有这些值类型: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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是值类型?
  • 什么是引用类型?
  • 什么是原始数据类型(基本数据类型)?
  • Javascript的基本类型包装对象有哪些?
  • 如何判断Javascript的数据类型(数据类型检测)
    • typeof
      • instanceof
      • Javascript的数据类型是怎么确立的?
      • 写在最后
      • 参考文献
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档