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

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 【面试题】JavaScript 的 8 种数据类型总结

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后端面试题库大全

相关文章
|
4月前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
149 59
|
1月前
|
存储 JavaScript 前端开发
JavaScript中的数据类型以及存储上的差别
通过本文的介绍,希望您能够深入理解JavaScript中的数据类型及其存储差别,并在实际编程中灵活运用这些知识,以提高代码的性能和稳定性。
56 3
|
2月前
|
存储 JavaScript 前端开发
js中的数据类型
JavaScript 中的数据类型包括五种基本类型(String、Number、Undefined、Boolean、Null)和三种引用类型(Object、Array、Function,以及ES6新增的Symbol)。基本类型直接存储值,引用类型存储的是指向实际数据的内存地址。了解它们的区别对于掌握 JavaScript 的变量赋值和函数传参至关重要。
43 1
|
2月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
88 4
|
3月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
160 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
3月前
|
JavaScript 前端开发 开发者
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
42 1
|
4月前
|
JavaScript 前端开发
JavaScript基础知识-基本数据类型和引用数据类型
关于JavaScript基础知识的文章,主要介绍了基本数据类型和引用数据类型。
50 2
JavaScript基础知识-基本数据类型和引用数据类型
|
4月前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
109 2
|
3月前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
77 0
|
5月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
512 1

热门文章

最新文章