JS为什么当条件为A&&B时FOR LOOP不迭代,但在B&&A时工作(A = = B = =true)



这是我的第一个问题,大家好!

我想尽快编写条件以终止循环。

循环不起作用,但应该更快地终止循环:

for (
let i = 0;
transactionsSortedByTime[i].unixTime <= unixEndTime && i < listLength;
i++
) {}

循环工作:

for (
let i = 0;
i < listLength && transactionsSortedByTime[i].unixTime <= unixEndTime;
i++
) {}

到目前为止,我确信 A&B 和 B&A 的结果是相同的,但在不同的时间以错误的结果终止(当其中一个 {A 或 B} 是错误的时(。

我的问题是为什么第二个循环正确迭代而第一个循环没有。

在您的情况下,A & BB & A不同,因为在第一个代码片段中,您正在访问transactionsSortedByTime数组的i'th索引,然后再检查i是否小于listLength。这样做会在i < listLength为假时提供未定义。

因此,应在transactionsSortedByTime[i].unixTime <= unixEndTime之前编写i < listLength以确保您的代码不会尝试访问超出transactionsSortedByTime数组范围的索引。

只需添加 ((,循环结构显然采用第一个表达式的布尔值,要解决这个问题,您必须添加括号,以便表达式获取 && 运算符的值:

for (
let i = 0;
(transactionsSortedByTime[i].unixTime <= unixEndTime && i < listLength);
i++
) {}

相关内容

  • 没有找到相关文章

最新更新