【问题标题】:Why does while(arr.length) behave this way为什么 while(arr.length) 会这样
【发布时间】:2021-09-03 16:35:11
【问题描述】:

我有密码

let arr = [1, 2, 3];

while (arr.length) {
  console.log(arr[arr.length - 1]);
  arr.pop();
}

这段代码的输出是

3
2
1
1

但我期待

3
2
1

当我将代码切换到

let arr = [1, 2, 3];

while (arr.length) {
  console.log(arr[arr.length - 1]);
  arr.pop();
}
console.log();

我明白了

3
2
1

为什么会这样?为什么我在第一个代码示例中得到重复?我怎样才能防止这种情况? 谢谢

【问题讨论】:

标签: javascript arrays


【解决方案1】:

只需在浏览器控制台以外的任何地方运行脚本,它就会正常运行。

let arr = [1, 2, 3];

while (arr.length) {
  console.log(arr[arr.length - 1]);
  arr.pop();
}

例如,在网页上,代码可以正常工作。

在控制台中,块中的最终表达式是块的完成值。这里是弹出的最终值,即 1。所以 1 是 while 循环的完成值,当 while 循环是代码中的最后一个块时,浏览器会为您记录。

您也可以忽略代码的完成值,只查看代码本身记录的内容,例如

这是一个完全合理的方法。

【讨论】:

  • Doh,不要告诉任何人我问过这个问题......谢谢你的回答。我会在 10 分钟内接受。
【解决方案2】:

arr = [1,2,3];
i = arr.length - 1;
while (i > -1) {
  console.log(arr[i]);
  i--;
}

【讨论】:

    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2011-06-03
    • 2018-06-08
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多