【面试题】JavaScript 的 8 种数据类型总结

news2025/1/17 14:12:56

JavaScript 数据类型

本文将介绍 JavaScript 的 8 种数据类型,结合代码对每种数据类型进行总结归纳。

一、数据类型

最新的 ECMAScript 标准定义了 8 种数据类型:

1.七种基本数据类型:

  • 布尔值(Boolean),有 2 个值分别是:true 和 false.
  • null,一个表明 null 值的特殊关键字。JavaScript 是大小写敏感的,因此 null 与 Null、NULL或变体完全不同。
  • undefined,和 null 一样是一个特殊的关键字,undefined 表示变量未赋值时的属性。
  • 数字(Number),整数或浮点数,例如: 42 或者 3.14159。
  • 字符串(String),字符串是一串表示文本值的字符序列,例如:"Howdy" 。
  • 代表(Symbol)( 在 ECMAScript 6 中新添加的类型).。一种实例是唯一且不可改变的数据类型。
  • 任意精度的整数 (BigInt) ,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。

2.以及对象(Object),即引用类型。包括 Object Array、Function 等。

二、基本类型和引用类型的特点

1.基本类型

基本数据类型存储在栈中(栈区指内存里的栈内存),占用的内存较小,可以直接操作它们的值,而且是按值传递的,即一个变量的值是直接存储在变量中的,它们的比较也是按值进行的。

例如:有以下几个基本类型的变量:

var name = 'jozo';
var city = 'guangzhou';
var age = 22;
复制代码

那么它的存储结构如下图:

栈区包括了变量的标识符和变量的值。

2.引用类型

引用类型的对象存储于堆中,占用的内存较大,不能直接操作它们的值,而是需要通过引用来访问它们的属性和方法,它们的赋值和比较也是按引用进行的,即一个变量的值是一个指向实际对象的引用。

例如:有以下几个对象:

var person1 = {name:'jozo'};
var person2 = {name:'xiaom'};
var person3 = {name:'xiaoq'};
复制代码

则这三个对象的在内存中保存的情况如下图:

由于基本类型和引用类型的差异,它们在使用上也有所不同。当我们对基本类型进行赋值、传参和比较时,只是对它们的值进行操作,而不会影响其他变量的值。但是对于引用类型,如果我们将一个引用类型变量赋值给另一个变量,那么两个变量实际上是指向同一个对象的引用。这意味着,如果我们在其中一个变量上进行修改,另一个变量也会受到影响。

例如: 1.基本类型和引用类型在参数传递中的区别

let a = 10;
let obj = { value: 20 };

function change(x, y) {
  x = 20;
  y.value = 30;
}

change(a, obj);

console.log(a); // 输出 10
console.log(obj.value); // 输出 30
复制代码

解析:基本类型的参数传递是值传递,函数内部对参数的修改不会影响原变量的值,因为函数内部修改的是参数的副本。而引用类型的参数传递是引用传递,函数内部对参数的修改会影响原变量的值,因为函数内部修改的是参数指向的对象的属性值。

2.基本类型和引用类型在赋值中的区别

let a = 10;
let b = a;
a = 20;
console.log(b); // 输出 10

let obj1 = { value: 10 };
let obj2 = obj1;
obj1.value = 20;
console.log(obj2.value); // 输出 20
复制代码

解析:基本类型的赋值是将变量的值复制一份给新变量,修改其中一个变量的值不会影响另一个变量的值。而引用类型的赋值是将变量的指针复制一份给新变量,两个变量指向同一个对象,修改其中一个变量指向的对象的属性值会影响另一个变量指向的对象。

3.基本类型和引用类型的相等比较

console.log(10 === 10); // 输出 true
console.log({} === {}); // 输出 false

let obj1 = { value: 10 };
let obj2 = obj1;
console.log(obj1 === obj2); // 输出 true
复制代码

解析:基本类型的相等比较是值比较,只有两个变量的值完全相同才相等。而引用类型的相等比较是指针比较,只有两个变量指向同一个对象才相等。

4.基本类型和引用类型的类型判断

console.log(typeof 10); // 输出 "number"
console.log(typeof {}); // 输出 "object"

let obj = { value: 10 };
console.log(obj instanceof Object); // 输出 true
复制代码

解析:使用 typeof 运算符可以判断基本类型的类型,使用 instanceof 运算符可以判断引用类型的类型。因为引用类型的类型是 Object,所以 instanceof Object 运算符可以用来判断一个变量是否为引用类型。

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache配置ssl常见错误问题汇总

对于站长来说,部署SSL证书来迁移到HTTPS是一个现实和重要的问题,那么,对于Apache系统来说,如何部署SSL证书实现HTTPS协议呢?下面小编为大家总结了几个比较常见的Apache配置ssl错误问题汇总。 Apache配置ssl常见错误一…

LEAP模型应用于工业、交通、建筑、电力、煤炭、炼油、经济、林业等各领域碳排放预测及建模分析

查看原文>>>LEAP软件(使用说明LEAP的模拟练习碳排放相关模板)IPCC收录的各种燃料CO2排放系数 目录 第一章 :LEAP建模理论基础 第二章:基于LEAP模型的能源需求预测模型构建 第三章:基于LEAP模型的能源供应…

基于Chatbot UI 实现ChatGPT对话-V1.2

基于Chatbot UI 实现ChatGPT对话-V1.0 前端基于开源项目:chatbot-ui进行二次开发,感兴趣的小伙伴可以自行研究。 本项目搭建初衷:在无法科学上网的情况下,实现ChatGPT对话。还有规避官方聊天时,长时间无链接导致的问题…

Linux网络服务----DNS

文章目录 一 、DNS 概念1.1 DNS的简介1.2 DNS 数据结构分布1.3 DNS 域名解析方式1.4 DNS的查询方式 二 、操作实验2.1 主dns服务器配置正向和反向解析2.2 设置从dns服务器正向和反向解析2.3 配置DHCP 一 、DNS 概念 1.1 DNS的简介 域名解析:是互联网的一项服务。它…

fisco bcos Caliper部署错误

fisco bcos Caliper部署错误 错误1、Depolying error: Error: Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given错误2:Depolying error: TypeError: secp256k1.sign is not a function 错误1、Depolyin…

中国传统的家庭观念,家庭养老一直是中国式养老的主要组成部分

哈喽大家好,本期小编为大家带来中国式养老的发展分析。中国的养老产业在不断的变革和进步,养老需求增加迅速。相关部门大力促进养老服务发展的同时,一些创新型企业也正在推出更加智能化和个性化的养老产品和服务。与此同时,养老行…

CCF-CSP-4-5

csp 2013-12-4 有趣的数2013-12-5 Im stuck10%2014-3-4 无线网络2014-3-5任务调度2014-9-4最优配餐2014-9-5拼图2014-12-4 最优灌溉2014-12-5货物调度2015-3-1 网络延时2015-3-5 最小花费2015-9-4 高速公路2015-9-5 最佳文章2015-12-4 送货2015-12-5 矩阵2013-12-4 有趣的数

简单介绍十几款常用的画架构图流程图的软件

简单介绍十几款常用的画架构图流程图的软件 draw.io draw.io是开源免费的在线画图工具,还提供桌面版本。 特性: 实时协作;支持在线离线版本;存储支持多种方式:Google Drive, OneDrive, GitHub, GitLab, Dropbox等&…

通识哈夫曼树及其应用,一起来构造属于自己的哈夫曼树

1.哈夫曼树的背景 哈夫曼(霍夫曼、赫夫曼)David Albert Huffman(August9,1925-October7,1999)。计算机科学的先驱,以他的哈夫曼编码闻名,在他的一生中,对于有限状态自动机,开关电路,异步过程和信…

ML | Python中的数据预处理

预处理是指在将数据提供给算法之前对数据进行的转换。数据预处理是一种用于将原始数据转换为干净数据集的技术。换句话说,无论何时从不同来源收集数据,它都是以原始格式收集的,这对于分析是不可行的。 数据预处理的需要 为了从机器学习项目中的应用模型中获得更好的结果,数…

SpringCloud:ElasticSearch之搜索结果处理

搜索的结果可以按照用户指定的方式去处理或展示。 1.排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 1.…

【ChatGPT】AI 发展如此火热,程序员的发展呢?

🍎道阻且长,行则将至。🍓 目录 一、AI 已来,ChatGPT 你用上了吗🌾二、AI 之路,这是社会在发展🌱三、AI 时代,程序员应该怎么做🌴 一、AI 已来,ChatGPT 你用上…

增加最优传输过程中遇到的问题

最近,正在使用最优传输,在使用的过程中遇到了一下问题,简单记录一下这些问题。该文章仅用于记录学习,不做其他用途,参考的文章均声明。 修改代码过程中,遇到的错误总结 Question 1. 描述: lin…

C++数据结构:二叉树的前序、中序、后序遍历的非递归实现

目录 一. 前序遍历的非递归实现 二. 中序遍历的非递归实现 三. 后序遍历的非递归实现 一. 前序遍历的非递归实现 我们知道,前序遍历的访问顺序为:根节点 -> 左子树 -> 右子树。如图1.1所示的二叉树,我们要通过非递归实现前序遍历&am…

车载网络 - Autosar网络管理 - 网络管理简介

一、什么是CAN网络管理及它的作用 现在的车辆是由大量的ECU节点组成的,为了能使各ECU能够正确并及时地进行CAN通信,需要有一套机制来统一协调总线上各节点的休眠唤醒,这套机制就是CAN网络管理(NM)。 网络管理的目的是保…

系统集成项目管理工程师 笔记(第四章:项目管理一般知识)

文章目录 4.1.2 项目目标 1764.1.3 项目的特点 1784.1.9 项目干系人 1894.1.11 事业环境因素 1924.1.12 组织过程资产 1924.2.3 组织结构 1944.2.4 PMO在组织结构中的作用 199PMO类型(支持型、控制型、指令型)项目经理和PMO的区别 4.4 典型的信息系统项目…

图片存储方案-七牛云存储

1.引语 在实际开发中,我们会有很多处理不同功能的服务器。例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的服务器 分服务器处理的目的是让服务器各司其职…

tail:查看日志命令工具

文章目录 1. Windows下tail查看日志命令工具下载、使用方法2. baretail【windows端替代tail的工具】3. Tail4win【windows端替代tail的工具】4. MobaXterm【windows端替代tail的工具】5. tail 命令介绍 1. Windows下tail查看日志命令工具下载、使用方法 tail工具下载 链接&am…

中文改写神器下载-中文改写神器

自动文章生成器 随着人工智能技术的快速发展,自动文章生成器已经成为了一个越来越流行的营销推广工具。这种工具可以根据您提供的关键词和主题,在几秒钟之内生成高质量的文章,为企业加快文章产出速度,提高品牌知名度提供了优秀的…

C语言CRC-16 MAXIM格式校验函数

C语言CRC-16 MAXIM格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同厂家通过对输入…