2.0 KiB
2.0 KiB
title | localeTitle |
---|---|
Catch Off By One Errors When Using Indexing | 使用索引时捕获一个错误 |
使用索引时捕获一个错误
基本
由于JavaScript索引的工作方式firstFive
有五个元素,但它们的索引从0到4 !
console.log(len); // 5
console.log(firstFive[0]); // 1
/**/
console.log(firstFive[4]); // 5
console.log(firstFive[5]); // undefined
这应该足以让你掌握firstFive
的限制。引导你注意循环。它有什么作用?您可以尝试调试它以找出答案!
调试
你得到这个代码:
for (let i = 1; i <= len; i++) {
console.log(firstFive[i]);
}
要调试这段代码,请使用console.clear()
。什么是最好的地方?答案就在for
声明之前!
console.clear();
for (let i = 1; i <= len; i++) {
console.log(firstFive[i]);
}
控制台输出:
Console was cleared.
2
3
4
5
undefined
分析
检查输出。在这些条件下,循环首先打印位于1 ...的元素,即2!它还尝试打印undefined
索引为5的元素。
这可以被视为这一挑战的关键。保持console.log()
和console.clear()
存在。它们将帮助您了解代码的工作原理。
解
解决此问题的最直接方法是更改for()条件。 让i
从0开始。另外, 不应该为i == 5执行循环。换句话说,当i == 5时, i
和len
之间的关系应该是false
。这可以通过使用i < len
来实现(是5 <len?false,循环不会被执行!)。
for (let i = 0; i < len; i++) {
快乐的编码! :电脑: