我在看这个 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?
因为b
是一个参数inside change
-inside change
,b
指的是局部变量,当局部变量被重新赋值时,对b
外部没有影响。
要么始终b
称为全局变量:
var a = {i: 0};
var b = 0;
function change(a) {
a.i++;
b++;
}
change(a);
console.log(a, b);
或者b
从返回change
,并将外部分配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);
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句