循环

假设你想打印数字 1 到 100,或者问候一个单词中的每个字符,或者持续提问一个问题直到答案正确。你可以写一百次同样的行,但这很繁琐,而且改起来更麻烦。循环是告诉 JavaScript 一遍又一遍地运行一段代码的方式,所以你只需写一次工作代码,让语言来完成重复。本章介绍你最常用的三个循环:for、while 和 for...of。
for 循环
**for 循环**是当你知道要重复多少次时使用的。它为你计数。这里是打印数字 0 到 4 的例子:
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 0
// 1
// 2
// 3
// 4括号中的部分有三个部分,由分号分隔:
let i = 0是开始:它创建一个名为i的计数器,并将其设为 0。i < 5是条件:只要这为真,循环就继续。i++是步长:每次循环后,它给i加 1(i++是i = i + 1的简写)。
所以循环从 i 为 0 开始,检查 i < 5,运行大括号中的代码,然后加 1 再检查。当 i 到达 5 时,条件为假,循环停止。
for 循环重复固定次数并为你计数。其循环头有三个部分:开始部分如 let i = 0、保持循环运行的条件如 i < 5,以及推动循环的步长如 i++。当条件变为假时,循环停止。 while 循环
有时你不知道要重复多少次,你只知道一个应该保持真的条件。这就是**while 循环**的用途。只要其条件成立,它就继续运行:
let count = 3;
while (count > 0) {
console.log(count);
count = count - 1;
}
console.log("Go");
// 3
// 2
// 1
// Go循环检查 count > 0,运行代码,然后再次检查。注意循环内的某些东西改变了 count,所以条件最终变为假,循环停止。如果循环内没有任何东西使条件变为假,循环会永远运行。这是无限循环,它会冻结你的程序,所以总是确保条件能够改变。
while 循环只要其条件为真就重复,没有内置计数器。当你不预先知道重复次数时使用它。总是在循环内改变某些东西以便条件能变为假,否则你会得到冻结程序的无限循环。 用 for...of 循环遍历字符串
for 和 while 循环用数字计数,但通常你想直接访问某物中的每一项。for...of 就是做这个的。这里它遍历一个单词的每个字符:
for (const char of "hello") {
console.log(char);
}
// h
// e
// l
// l
// o读作"对单词的每个字符"。在每次循环中,char 保存下一个字符,你永远不接触计数器或条件。当你只想依次查看每一项时,它比 for 循环更干净。
你会主要在数组上使用 for...of,数组是值的列表,你会在接下来的章节中遇到。字符串是循环的一个很好的第一个对象,因为它已经是字符的序列,for...of 完全按那种方式对待它。
for...of 直接访问每一项,没有计数器也没有条件要管理。在字符串上,每次循环给你下一个字符。你会主要在数组上使用它,但字符串是循环的一个干净的第一个对象,因为它已经是字符的序列。 循环从这里走向何处
循环是让你停止重复自己,让语言来做重复的方式。for 循环计数已知的次数,while 只要条件成立就重复,for...of 直接遍历序列的项。从这里带出的一个习惯:确保每个循环都能结束,当你只需要每一项时倾向于 for...of。
循环真正重要的原因是你处理的大多数数据都以集合的形式出现。接下来的章节介绍数组,你会不断循环遍历的列表,以及稍后的数组方法,当你转换数据时它们通常替代手写的循环。如果你想加强循环依赖的条件,条件语句介绍了决定循环何时继续以及何时停止的比较。

