gpt4 book ai didi

javascript - 为什么这段js代码中的值没有改变?

转载 作者:行者123 更新时间:2023-11-28 13:00:24 25 4
gpt4 key购买 nike

我正在查看这段 JavaScript 代码:

var a = {i: 0};
var b = 0;

function change(a, b) {
a.i++;
b++;
}
change(a, b);

console.log(a, b);

您希望被记录: {i:1} 1 。它实际上返回:{i:1} 0?为什么 b=0 而不是 b=1?

最佳答案

因为 bchange 内的参数 - 在 change 内,b引用局部变量,当局部变量被重新赋值时,对外部的b没有影响。

要么始终将 b 引用为全局变量:

var a = {i: 0};
var b = 0;

function change(a) {
a.i++;
b++;
}
change(a);

console.log(a, b);

或者从change返回b,并将外层b赋值给change的结果:

var a = {i: 0};
var b = 0;

function change(a, b) {
a.i++;
b++;
return b;
}
b = change(a, b);

console.log(a, b);

(如果需要返回并重新分配多个变量,请返回对象或数组:

var a = {i: 0};
var b = 0;
var c = 0;

function change(a, b, c) {
a.i++;
b++;
c++;
return { b, c };
}
({b, c} = change(a, b, c));

console.log(a, b, c);

)

关于javascript - 为什么这段js代码中的值没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com