在Javascript中,您可以像下面这样重新分配变量:

var x = 10;
x+=10;
console.log(x);
//prints 20 to the console


但是,如果我再举一个看似相似的活动的示例,则会得到意外的结果:

var originalVar = 1;

changeMyVar(originalVar);

function changeMyVar(myVar) {
  myVar += 1000;
  return myVar;
}

console.log(originalVar);
//prints 1 to the console


我认为这是相同的。我将变量作为参数传递给函数。我正在该函数中重新分配值。然后我返回并打印该变量。突变在哪里?

最佳答案

作为函数参数的基元通过javascript中的值传递。因此,myVar函数中的changeMyVar不是引用originalVar,而是引用值为originalVar的新变量。

10-05 22:01