• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

学习使用 JavaScript 编码:循环

假设您的任务是编写一个显示数字 1 到 100 的程序。完成此任务的一种方法是编写 100 条console.log()语句。但我敢肯定你不会,因为你会厌倦第九行或第十行。

学习使用 JavaScript 编码:循环  第1张

每个语句中唯一变化的部分是数字,因此应该有一种方法可以只写一个语句。还有循环。循环让我们重复执行代码块中的一组步骤。

  • 1、循环

  • 2、Do-While 循环

  • 3、For 循环

  • 4、数组

  • 5、For-Of 循环

  • 6、For-In 循环

循环

当某些条件的计算结果为真时,While 循环将重复执行一组语句。当条件为假时,程序将退出循环。这种循环在执行迭代之前测试条件。迭代是循环体的执行。这是一个 while 循环的基本示例:

let x = 10;
 
while(x > 0) {
   console.log(`x is now ${x}`);
   x -= 1;
}
 
console.log("Out of the loop.");
 
/* Outputs:
x is now 10
x is now 9
x is now 8
x is now 7
x is now 6
x is now 5
x is now 4
x is now 3
x is now 2
x is now 1
Out of the loop. */

在上面的示例中,我们首先设置x为 10。在这种情况下,条件的x > 0计算结果为true,因此执行块内的代码。这将打印语句“x 现在是 10”并将 x 的值减 1。在下一次检查期间,x它等于 9,它仍然大于 0。因此循环继续。在最后一次迭代中,x最终变为 1,我们打印“x 现在是 1”。之后,x变为 0,因此我们正在评估的条件不再成立true。然后,我们开始执行循环外的语句并打印“Out of the loop”。

这是 while 循环的一般形式:

while (condition) {
    statement;
    statement;
    etc.
}

使用 while 循环时要记住的一件事是不要创建永不结束的循环。发生这种情况是因为条件永远不会变为false. 如果它发生在你身上,你的程序就会崩溃。这是一个例子:

let x = 10;
 
while(x > 0) {
   console.log(`x is now ${x}`);
   x += 1;
}
 
console.log("Out of the loop.");

在这种情况下,我们增加x而不是减少,并且 的值x已经在 0 以上,因此循环将无限期地继续下去。

任务

这个循环体会被执行多少次?

let i = 0;
 
while (i < 10) {
    console.log("Hello, World");
    i += 1;
}

Do-While 循环

do-while 循环将首先执行语句体,然后检查条件。当您知道要至少运行一次代码时,这种循环很有用。以下示例将记录xonce 的值,即使条件评估false为x等于 0。

let x = 0;
 
do {
   console.log(`x is now ${x}`);
   x -= 1;
} while(x > 0);
 
console.log("Out of the loop.");
 
/* Outputs:
x is now 0
Out of the loop. */

我在自己的项目中多次使用 do-while 循环来生成随机值,然后只要它们不满足某些条件就一直生成它们。这有助于避免由于初始化而导致的重复,然后在循环内重新分配。

这是 do-while 循环的一般形式:

do {
    statement;
    statement;
    etc.
} while (condition);

任务

编写一个 do-while 循环来显示数字 1 到 10。

For 循环

for 循环将重复执行代码块特定次数。以下示例显示数字 1 到 10:

for (let i = 1; i <= 10; i++) {
    console.log(i);
}

这是 for 循环的一般形式:

for (initial; condition; step) {
    statement;
    statement;
    etc.
}

Initial是一个表达式,它设置我们的一个或多个变量的值。这是一个可选的表达式来进行初始化。

条件是一个表达式,必须为真才能执行语句。块内的语句仅在条件计算为 时执行true。完全跳过条件将导致它们始终为真,因此您将不得不以其他方式退出循环。

step是一个增加变量值的表达式。这也是可选的,在 for 块内的所有语句都执行后执行。步骤表达式通常用于接近循环的结束条件。

您还可以将 for 循环编写为等效的 while 循环。您需要做的就是稍微移动您的语句和条件。上面的 for 循环可以改写为:

initial;
 
while(condition) {
    statement;
    statement;
    etc.
    step;
}

一种编程模式是使用 for 循环用自身和新值更新变量的值。此示例对数字 1 到 10 求和:

let x = 0;
 
for (let i = 1; i <= 10; i++) {
    x += i;
}
 
// Outputs: 55
console.log(x);

这是等效的 while 循环,它给出相同的输出:

let x = 0;
let i = 1;
 
while(i <= 10) {
  x += i;
  i += 1;
}
 
// Outputs: 55
console.log(x);

您应该注意到我是如何在 while 块的末尾而不是在开头进行增量的。在开始时增加循环变量i会给我们 65,这不是我们打算在这里做的。

运算符是一个赋值运算符,+=它将值添加回变量。这是所有赋值运算符的列表:

操作员例子相等的
+=x += 2 x = x + 2
-=x -= 2x = x - 2
*=x * = 2x = x * 2
/=x /= 2x = x / 2
%=x%=2x = x % 2

任务 

编写一个 for 循环来计算一个数的阶乘。数n的因数是从1到n的所有整数的乘积。例如,4!(4 阶乘)是 1 x 2 x 3 x 4,等于 24。

数组

数组是一个对象,它包含一个项目列表,称为元素,可以通过其索引访问这些项目。索引是元素在数组中的位置。第一个元素位于 0 索引处。

数组有一个名为的属性length,它为您提供数组中元素的总数。这意味着您可以创建一个 for 循环来迭代数组中的项目,如下所示:

let arr = [1, 2, "Hello", "World"];
 
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}
 
/*
Outputs:
1
2
Hello
World
*/

二维数组是以数组为元素的数组。例如:

let arr = [
    [1, 2],
    ["Hello", "World"]
];

这是遍历数组并显示每个元素的方式:

for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
        console.log(arr[ i ][ j ]);
    }
}
 
/*
Outputs:
1
2
Hello
World
*/

你将如何重写上面的循环,以便从末尾开始打印数组元素?

For-Of 循环

遍历数组时最常见的情况之一是,您只是从头开始,然后一次遍历所有元素,直到到达末尾。有一种更短的方法可以将 for 循环写成 for-of 循环。

for-of 循环让我们遍历可迭代对象的值,例如数组、映射和字符串。for-of 循环基本上用于迭代对象的属性值。这是上一节中重写为 for-of 循环的循环。

let arr = [1, 2, "Hello", "World"];
 
for (let item of arr) {
    console.log(item);
}
 
/*
Outputs:
1
2
Hello
World
*/

循环一个字符串:

let big_word = "Pulchritudinous";
 
for (let char of big_word) {
    console.log(char);
}
 
/*
Outputs:
P
u
l
c
h
r
i
t
u
d
i
n
o
u
s
*/

For-In 循环

这种循环让我们遍历对象的属性。对象是具有映射到值的键的数据结构。javascript 中的数组也是对象,所以我们也可以使用 for-in 循环来遍历数组属性。让我们首先看看如何使用 for-in 循环来迭代对象键或属性。

以下是使用 for-in 循环遍历对象键的示例:

let obj = {
    foo: "Hello",
    bar: "World"
};
 
for (let key in obj) {
    console.log(key);
}
 
/*
Outputs:
foo
bar
*/

以下是使用 for-in 循环遍历数组的示例:

let arr = [1, 2, "hello", "world"];
 
for (let key in arr) {
    console.log(arr[key]);
}
 
/* Outputs:
1
2
hello
world */

我想补充一点,即使我们能够使用 for-in 循环遍历数组元素,您也应该避免这样做。这是因为它旨在循环一个对象的属性,如果您只想循环遍历数组索引以获取数组值,则在某些情况下您可能会得到意想不到的结果。

审查

循环让我们减少代码中的重复。While 循环让我们重复一个动作,直到条件为假。do-while 循环将至少执行一次。For循环让我们重复一个动作,直到我们到达计数结束。for-in 循环旨在让我们可以访问对象中的键。for-of 循环的设计目的是让我们可以获得可迭代对象的值。 


文章目录
  • 循环
    • 任务
  • Do-While 循环
  • For 循环
    • 任务
  • 数组
  • For-Of 循环
  • For-In 循环
  • 审查
  • 发表评论