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

简介: 【面试题】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 前端开发
【JavaScript技术专栏】JavaScript基础入门:变量、数据类型与运算符
【4月更文挑战第30天】本文介绍了JavaScript的基础知识,包括变量(var、let、const)、数据类型(Number、String、Boolean、Undefined、Null及Object、Array)和运算符(算术、赋值、比较、逻辑)。通过实例展示了如何声明变量、操作数据类型以及使用运算符执行数学和逻辑运算。了解这些基础知识对初学者至关重要,是进阶学习JavaScript的关键。
|
2天前
|
前端开发 JavaScript
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
|
2天前
|
存储 前端开发 JavaScript
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
JavaScript数据类型归纳,架构师花费近一年时间整理出来的前端核心知识
|
2天前
|
前端开发 JavaScript
JavaScript:this-关键字,2024中级前端开发面试解答
JavaScript:this-关键字,2024中级前端开发面试解答
|
2天前
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
|
2天前
|
JavaScript 前端开发
web前端JS高阶面试题(1),高级开发工程师面试
web前端JS高阶面试题(1),高级开发工程师面试
|
2天前
|
JSON 前端开发 JavaScript
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
|
2天前
|
JSON JavaScript 前端开发
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么
|
2天前
|
缓存 前端开发 JavaScript
Javascript模块化开发基础,最新美团点评前端团队面试题
Javascript模块化开发基础,最新美团点评前端团队面试题
|
3天前
|
JavaScript 前端开发 程序员
javascript基础(入门),当上项目经理才知道,推荐程序员面试秘籍
javascript基础(入门),当上项目经理才知道,推荐程序员面试秘籍