freeCodeCamp/guide/chinese/certifications/javascript-algorithms-and-d.../debugging/catch-off-by-one-errors-whe.../index.md

2.0 KiB
Raw Blame History

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时 ilen之间的关系应该是false 。这可以通过使用i < len来实现是5 <lenfalse循环不会被执行

  for (let i = 0; i < len; i++) { 

快乐的编码! :电脑:

资源