解释javascript通过值传递javascript吗?

Javascript是一种按值传递的语言。但是对于对象,值是它们的参考。因此,例如,如果将int作为参数传递给函数并在函数中增加其值,则其值不会在调用者的上下文中更新-

示例

let i = 0;
function increment(x) {
   x = x + 1
   console.log(x)
}
increment(i)
console.log(i)

输出结果

1
0

当您传递对象并在函数的上下文中更新该对象的引用时,这不会影响该对象。但是,如果您更改了对象的内部,那将反映在对象中。

示例

let obj = {'foo': 'bar'};
function updateRef(x) {
   //x的本地引用获取更新,不影响obj-
   x = {}
}
function addHelloWorld(y) {
   //引用的对象
   y['hello'] = 'world';
}
console.log(obj)
updateRef(obj)
console.log(obj)
addHelloWorld(obj)
console.log(obj)

输出结果

{ foo: 'bar' }
{ foo: 'bar' }
{ foo: 'bar', hello: 'world' }

请注意,对象引用更改不会影响对象。重新分配了局部变量x。但是,在第二个函数中,y引用了obj对象并对该对象的内部状态进行了更改。这引起了原始对象的变化。