返回

剖析JS变量类型与计算

前端

变量类型

在JavaScript中,变量可以存储不同的类型的数据。这些类型包括:

  • 值类型:值类型变量直接存储数据的值。这包括number、undefined、string、boolean和symbol类型。
  • 引用类型:引用类型变量不直接存储数据的值,而是存储对数据的内存地址的引用。这包括object、array和function类型。

计算

JavaScript中的计算与其他编程语言类似,可以使用基本算术运算符(+、-、*、/、%)和逻辑运算符(&&、||、!)进行计算。此外,JavaScript还支持位运算符(<<、>>、&、|、^)。

值类型与引用类型

  • 值类型变量:
    • 直接存储数据的值。
    • 在内存中占用固定大小的空间。
    • 变量之间是独立的,对一个变量的修改不会影响另一个变量。
    • 常见的值类型有number、undefined、string、boolean和symbol。
  • 引用类型变量:
    • 不直接存储数据的值,而是存储对数据的内存地址的引用。
    • 在内存中占用的空间大小不固定,取决于所引用的数据的实际大小。
    • 变量之间是相互关联的,对一个变量的修改会影响另一个变量。
    • 常见引用类型有object、array和function。

深拷贝与浅拷贝

  • 深拷贝:深拷贝是指创建一个新的变量,并将原变量的值复制到新变量中,同时也会复制原变量中所有引用的对象的副本。这样,新变量与原变量完全独立,对一个变量的修改不会影响另一个变量。
  • 浅拷贝:浅拷贝是指创建一个新的变量,并将原变量的值复制到新变量中,但是不会复制原变量中所有引用的对象的副本。这样,新变量和原变量共享对同一对象的引用,对一个变量的修改会影响另一个变量。

实例

// 值类型变量示例
let num1 = 10;
let num2 = num1;
num1++;
console.log(num2); // 10

// 引用类型变量示例
let obj1 = {
  name: 'John',
  age: 30
};
let obj2 = obj1;
obj1.name = 'Mary';
console.log(obj2.name); // Mary

// 深拷贝示例
let obj3 = JSON.parse(JSON.stringify(obj1));
obj1.name = 'Alice';
console.log(obj3.name); // Mary

// 浅拷贝示例
let obj4 = Object.assign({}, obj1);
obj1.name = 'Bob';
console.log(obj4.name); // Bob

结语

在本文中,我们详细介绍了JavaScript变量类型和计算的知识。我们了解到了JavaScript中有哪些不同的变量类型,值类型和引用类型之间有什么区别,以及如何实现值类型和引用类型变量的深拷贝和浅拷贝。同时,我们还学习了如何进行JavaScript变量的计算。希望本文对您有所帮助。