js中原始值和引用值有什么区别

58次阅读
没有评论

JavaScript中的数据类型可以分为原始值(primitive values)和引用值(reference values)两种类型。原始值是不可变的,而引用值则是可以变化的。

  1. 原始值

JavaScript中的原始值包括数字、字符串、布尔值、null和undefined。原始值是不可变的,也就是说它们的值在赋值后不能被改变。如果需要改变原始值,只能重新赋值一个新的值。

let num1 = 10;
let num2 = num1;
num2 = 20;

console.log(num1); // 10
console.log(num2); // 20

在上面的例子中,num1被赋值为10,然后num2被赋值为num1,num2又被赋值为20。但是num1的值仍然是10,因为原始值是不可变的。

  1. 引用值

JavaScript中的引用值包括对象、数组和函数。引用值是可以改变的,因为它们的值是指向对象或数组或函数的地址,而不是对象或数组或函数本身的值。这意味着如果改变了引用值指向的对象或数组或函数,那么所有引用这个值的变量也会受到影响。

let obj1 = {name: "Alice", age: 20};
let obj2 = obj1;
obj2.age = 21;

console.log(obj1); // {name: "Alice", age: 21}
console.log(obj2); // {name: "Alice", age: 21}

在上面的例子中,obj1被赋值为一个包含name和age属性的对象,然后obj2被赋值为obj1。然后,obj2的age属性被修改为21。由于obj1和obj2都指向同一个对象,因此obj1和obj2的值都被修改了。

总结:

  • 原始值是不可变的,而引用值是可以改变的;
  • 改变原始值需要重新赋值,而改变引用值只需要修改它指向的对象;
  • 多个变量引用同一个对象时,一个变量的改变会影响其他变量的值。
正文完
 
评论(没有评论)