JavaScript循环和迭代器

我偶然发现了我很早就在编程教育中写的一篇旧文章。 由于我发现对它进行工作对教给我基本的JavaScript语法有很大的帮助,所以我终于决定将其发布在这里。 请享用!

介绍

认识Mikey:

米奇

当我们上次看到Mikey时,他只是在学习使用VIM。 您可以在此处阅读有关Mikey过去历险的更多信息。

Mikey决定该是时候终于学习他的第二种编程语言了,并认为JavaScript与其他语言一样好。 尽管Mikey已经学到了足够多的语法来学习,但他仍然难以记住所有可用的循环。 让我们快速浏览一下JavaScript中可用的每个循环。

循环

for循环是只要条件返回true执行的循环:

 对于([initialExpression]; [condition]; [incrementExpression]) 
声明

通常, initialExpression声明一个新变量,该变量在评估condition时用作参考点。 一旦执行了循环,它将调用incrementExpression

让我们编写一个函数,该函数使用for循环在控制台中记录Mikey最好的朋友:

  var friends = [“ Tommy”,“ Billy”,“ Danny”,“ Tony”] 
  for(var i = 0; i <friends.length; i ++){ 
console.log(朋友[i])
}
  //记录到控制台: 
汤米
比利
丹尼
托尼

让我们分别查看每一行。 第一行是声明一个变量,该变量存储一个名称数组。 这是我们的for循环将要迭代的集合。

for循环的初始表达式是声明一个计数器var i 。 该condition确保只要计数器小于friends数组的长度,循环就将继续循环。 一旦执行了循环, i将加1。

在循环中,对于每次迭代,我们将console.log命名为friends数组的第i个索引的名称。

while 循环

while循环传递了一个条件,只要条件返回true ,它将执行其语句。 在执行该语句之前,它将根据条件的返回值检查条件并执行该语句或退出循环。

 同时( 条件
声明

让我们让Mikey使用while循环从上面重写for循环:

  var index = 0 
var friends = [“ Tommy”,“ Billy”,“ Danny”,“ Tony”]
 而(索引<friends.length){ 
console.log(friends [index])
索引++
}
  //记录到控制台: 
汤米
比利
丹尼
托尼

请记住,只要条件保持为真,该语句就会重复执行,因此,如果条件从不等于false,则循环有可能永远重复:

  var index = 0 
var friends = [“ Tommy”,“ Billy”,“ Danny”,“ Tony”]
而(索引<friends.length){
console.log(朋友[i])
//不增加索引将导致无限循环
}

do…while 循环

do…while循环提供了一条语句和一个条件,只要条件评估为true,该语句就会重复执行。


声明
while( 条件 );

让我们使用do…while循环重新编写for循环:

 变量i = 0 
var friends = [“ Tommy”,“ Billy”,“ Danny”,“ Tony”]
 做{ 
console.log(朋友[i])
我++
}而(i <friends.length)
  //记录到控制台: 
汤米
比利
丹尼
托尼

循环中

for..in循环对对象的每个属性执行操作。

 对于(对象可变){ 
陈述
}

由于对象是按键而不是按索引组织的,因此无法像前面的示例中那样使用计数器对对象进行迭代。 让我们调整朋友列表,并使用for…in循环遍历包含Mikey朋友的对象中的每个键:

  var friends = { 
第一:“汤米”,
第二个:“比利”,
第三名:“丹尼”,
第四名:“托尼”
}
 对于(朋友中的各种人){ 
console.log(人)
}
  //记录到控制台: 
第一
第二
第三
第四
 对于(朋友中的各种人){ 
console.log(朋友[人])
}
  //记录到控制台: 
汤米
比利
丹尼
托尼
 对于(朋友中的各种人){ 
console.log(`$ {person}:$ {friends [person]}`)
}
  //登录到控制台: 
第一:汤米
第二名:比利
第三名:丹尼
第四名:托尼

for…of 循环

for…of循环在可迭代对象上进行迭代。

  for( iterable的 变量 ){ 
声明
}

由于数组和字符串都是可迭代的,因此for…of可以对它们两个进行操作。 让我们看一下在字符串和数组上使用for…of

  var name =“ Mikey” 
for(姓名字母){
console.log(字母)
}
  //记录到控制台: 
中号
一世
ķ
Ë
ÿ
  var friends = [“ Tommy”,“ Billy”,“ Danny”,“ Tony”] 
对于(朋友的名字){
console.log(名称)
}
  //记录到控制台: 
汤米
比利
丹尼
托尼

结论

选择要实现的循环取决于许多不同的变量,并非每个循环都适合每种情况。

我发现Loops and Iteration上的MDN页面是JS循环的很好的介绍,并且强烈鼓励希望学习更多有关此主题的人访问该页面。