在两个函数中更新全局变量 JavaScript
Update global variables in two functions JavaScript
尽管我知道 JavaScript 中的“全局作用域、函数作用域、块作用域”。我卡在了这个代码块中。
我把代码逻辑简化如下。我期望的是,执行函数中的 console.log(a, b, c)
将是 a = 3、b = 6、c = 9。
但我实际得到的是 a = 0、b = 0、c = 0。出了什么问题以及如何解决这个问题?谢谢
(function() {
let a,b,c;
let conditions = [-1, 1, 2, 3 ];
const execute = () => {
for (let i=0; i<conditions.length; i++) {
if (conditions[i] < 0) {
a = 0;
b = 0;
c = 0;
} else if (conditions[i] > 0) {
update(a, b, c);
}
}
console.log(a,b,c);
}
const update = (a, b, c) => {
a = a + 1;
b = b + 2;
c = c + 3;
}
execute();
})()
在这里,通过不为 update()
声明参数,对父作用域中的变量进行赋值。
(function() {
let a,b,c;
let conditions = [-1, 1, 2, 3 ];
const execute = () => {
for (let i=0; i<conditions.length; i++) {
if (conditions[i] < 0) {
a = 0;
b = 0;
c = 0;
} else if (conditions[i] > 0) {
update(); // edit
}
}
console.log(a,b,c);
}
const update = () => {
a = a + 1;
b = b + 2;
c = c + 3;
}
execute();
})()
尽管我知道 JavaScript 中的“全局作用域、函数作用域、块作用域”。我卡在了这个代码块中。
我把代码逻辑简化如下。我期望的是,执行函数中的 console.log(a, b, c)
将是 a = 3、b = 6、c = 9。
但我实际得到的是 a = 0、b = 0、c = 0。出了什么问题以及如何解决这个问题?谢谢
(function() {
let a,b,c;
let conditions = [-1, 1, 2, 3 ];
const execute = () => {
for (let i=0; i<conditions.length; i++) {
if (conditions[i] < 0) {
a = 0;
b = 0;
c = 0;
} else if (conditions[i] > 0) {
update(a, b, c);
}
}
console.log(a,b,c);
}
const update = (a, b, c) => {
a = a + 1;
b = b + 2;
c = c + 3;
}
execute();
})()
在这里,通过不为 update()
声明参数,对父作用域中的变量进行赋值。
(function() {
let a,b,c;
let conditions = [-1, 1, 2, 3 ];
const execute = () => {
for (let i=0; i<conditions.length; i++) {
if (conditions[i] < 0) {
a = 0;
b = 0;
c = 0;
} else if (conditions[i] > 0) {
update(); // edit
}
}
console.log(a,b,c);
}
const update = () => {
a = a + 1;
b = b + 2;
c = c + 3;
}
execute();
})()