【发布时间】:2019-11-07 15:12:46
【问题描述】:
我正在尝试解决这个编程问题,但我无法访问 while 循环内的全局变量。当我访问全局变量时,它给了我 undefined。
function equal(h1, h2, h3) {
let sum1 = 0;
let sum2 = 0;
let sum3 = 0;
let first = [];
let second = [];
let third = [];
let count = 0;
while (h1.length !== 0) {
var popped = h1.pop();
sum1 += popped;
first.push(popped);
}
while (h2.length !== 0) {
var popped = h2.pop();
sum2 += popped;
second.push(popped);
}
while (h3.length !== 0) {
var popped = h3.pop();
sum3 += popped;
third.push(popped);
}
while (sum1 === sum2 && sum2 === sum3 && sum3 === sum1) {
// Below two consoles are not printing anything.
console.log(sum1, sum2, sum3);
console.log(h1, h2, h3);
if (sum1 > sum2) {
var x = first.pop();
sum1 = sum1 - x;
} else if (sum2 > sum3) {
var y = second.pop();
sum2 = sum2 - y;
} else {
var z = third.pop();
sum3 = sum3 - z;
}
}
}
console.log(equal([3, 2, 1, 1, 1], [4, 3, 2], [1, 1, 4, 1]));
【问题讨论】:
-
你的函数没有返回任何东西,所以
console.log将打印“未定义”。 -
我的意思是,当我在内部访问 console.log(sum1, sum2, sum3) 或 console.log(h1, h2, h3) 时,它会打印 undefined。
-
@devesh 这些都不是全局变量,它们都是函数的局部变量。
-
你永远不会到达那些
console.log行,因为while条件不正确。 -
sum1 == 8, sum2 == 9, sum3 == 7,所以你永远不会进入while循环。
标签: javascript arrays while-loop