在JavaScript中,如何判断值是通过引用还是通过值传递?

96 阅读1分钟

答案是:这取决于!

原始类型是通过值传递的。

对象是通过引用来传递的。

原始类型是数字、字符串、布尔运算、空、未定义和符号。

所有不是原始类型的东西都是一个对象。数组是对象。函数是对象。

当你把一个数字传给一个函数时,它被复制到该函数中。

const increment = num => {
  num = num + 1
}

const num = 2
increment(num)

console.log(num) //2

如果你传递一个对象,它是通过引用传递的,所以如果你修改它的一个属性,原来的对象也会被修改。

const increment = num => {
  num.value = num.value + 1
}

const num = {
  value: 2
}

increment(num)

console.log(num.value) //3