解释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对象并对该对象的内部状态进行了更改。这引起了原始对象的变化。