Javascript中有些奇怪的东西

时间:2018-09-13 04:04:37

标签: javascript

JavaScript代码:

var age = 27;
var obj = {
  name: 'Jona',
  city: 'Lisbon'
};

function change(a, b) {
  a = 30;
  b.city = 'San Francisco';
}
change(age, obj);
console.log('age:', age);
console.log('obj.city:', obj.city);

控制台中的结果分别是旧金山27。 我对为什么age的值是27而不是30感到困惑。我认为,在调用函数更改后,变量age的值将更改为30。有人可以回答吗?

1 个答案:

答案 0 :(得分:0)

它是关于“按值传递”和“按引用传递”

在javascript上,当将基元传递给函数时,它将“按值传递” 如果将对象/数组传递给函数,则为“按引用传递”。 在函数内部传递的对象的更改就是更改对象本身。