while循环中的条件表达式不能按预期工作

问题描述 投票:0回答:2

我给我的while循环提供了条件测试,但它似乎没有用。我认为这是因为增量算子。但我找不到原因

const nums = [3, 5, 15, 7, 5];
let n, i = 0;
while ((n = nums[i]) < 10, i++ < nums.length) {
  console.log(`Number less than 10: ${n}.`);
  };

预计[3,5,7,5] 实际结果[3,5,15,7,5] 我不知道为什么15出来了。

我想知道为什么while循环像这样工作。

更新:

这个问题来自“学习javascript 3rd”这本书,,逗号运算符不像我想的那样工作。

javascript while-loop expression increment
2个回答
2
投票

当你到达15时,如果你更正了,那么就是快捷方式

逗号运算符返回i++ < nums.length的结果

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

你真的想看看ES5 / ES6和过滤器

let smallNums = [3, 5, 15, 7, 5].filter((n) => n<10)
console.log(smallNums)

同样没有ES6箭头:

let smallNums = [3, 5, 15, 7, 5].filter(function(n) { return n<10; })
console.log(smallNums)

2
投票

这里。你应该在while循环中创建一个条件,因为如果条件为false,那么整个循环将被终止。

const nums = [3, 5, 15, 7, 5];
let n, i = 0;
while (i < nums.length) {
  if ((n = nums[i++]) < 10) {
    console.log(`Number less than 10: ${n}.`);
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.