热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Javascript中的数据类型

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Javascript中的数据类型相关的知识,希望对你有一定的参考价值。什么是值类型?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Javascript中的数据类型相关的知识,希望对你有一定的参考价值。



什么是值类型?

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

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

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

技术图片
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。


推荐阅读
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
author-avatar
sisihg_676
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有