MST

星途 面试题库

面试题:JavaScript变量存储与数据类型:基本类型存储分析

在JavaScript中,基本数据类型(如Number、String、Boolean等)是如何存储在内存中的?请详细说明其存储机制,并举例说明这种存储方式对变量赋值和比较操作的影响。
27.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

基本数据类型的存储机制

  1. 栈内存:在JavaScript中,基本数据类型(NumberStringBooleannullundefinedSymbol 从ES6开始)的值直接存储在栈内存中。栈内存是一种后进先出(LIFO)的数据结构,它为每个执行上下文分配一块内存空间。当一个函数被调用时,会为该函数创建一个新的执行上下文并压入栈中;函数执行完毕后,该执行上下文从栈中弹出。

对变量赋值的影响

  1. 直接赋值:当使用基本数据类型进行变量赋值时,会在栈内存中创建一个新的值,并将该值赋给变量。例如:
let num1 = 5;
let num2 = num1;

这里 num1 在栈内存中存储值 5,当 let num2 = num1 执行时,会在栈内存中为 num2 单独创建一个值为 5 的空间,此时 num1num2 虽然值相同,但在内存中是两个独立的存储单元。后续如果修改 num2 的值,不会影响 num1

num2 = 10;
console.log(num1); // 输出 5
console.log(num2); // 输出 10

对比较操作的影响

  1. 值比较:基本数据类型在进行比较操作时,比较的是它们在栈内存中存储的值。例如:
let str1 = 'hello';
let str2 = 'hello';
console.log(str1 === str2); // 输出 true

这里 str1str2 虽然是两个不同的变量,但由于它们存储在栈内存中的值完全相同,所以 === 比较(严格相等比较,既比较值又比较类型)结果为 true

let bool1 = true;
let bool2 = false;
console.log(bool1 === bool2); // 输出 false

由于 bool1bool2 在栈内存中的值不同,所以比较结果为 false