while 循环中的条件表达式无法按预期工作

conditional expression in while-loop does not work as expected

我对我的 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 循环会这样工作。

更新:

此题出自书本'learning javascript 3rd' , 逗号运算符没有像我想的那样工作。

这里。您应该在 while 循环内设置条件,因为如果条件为假,则整个循环将终止。

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}.`);
  }
};

如果将 , 更正为 &&

,则当您到达 15 时,while 是快捷方式

逗号运算符returnsi++ < 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)