解释 TypeScript 中 for 循环的不同变体
在任何编程语言中,我们都使用循环来重复或多次执行相同的代码块。循环允许我们编写更少的代码来多次执行相同的代码块。
for 循环是 TypeScript 中的循环之一。如下所示,TypeScript 中 for 循环还有三种不同的子类型。
普通 for 循环
for-of 循环
for-in 循环
我们将在本 TypeScript 教程中了解 for 循环的所有变体。此外,我们将了解每种 for 循环类型与其他循环的不同之处。
普通 for 循环简介
我们可以使用 for 循环多次执行代码块。此外,我们可以定义要执行代码块的次数。对于 for 循环的每次迭代,我们可以对变量执行不同的操作。
语法
您可以按照以下语法在 TypeScript 中使用 for 循环。
for(initialization; condition: step){ // for 循环的代码块 }
for 循环多次执行花括号内的代码。
参数
用户可以在语法中观察到 for 循环采用三个不同的参数,这些参数由";"分隔
初始化 - 这是启动循环的初始化条件。当 for 循环开始时,它将调用在第一个分号之前编写的所有代码,这意味着在初始化块中。
条件 - 这是循环的终止条件,允许我们停止 for 循环的迭代。在 for 循环的每次迭代之后,它会检查条件是否返回 true,只有 for 循环才会进行下一次迭代;否则,它会停止迭代。
步骤 - 这是在每次迭代后移动 for 循环并对可迭代变量进行更改的步骤。
示例 1
在下面的示例中,我们使用 for 循环打印了五次消息。在初始化步骤中,我们用 1 初始化了 k 变量。每次迭代之后,for 循环都会检查 k 的值是否小于或等于 5,它将运行下一次迭代。此外,for 循环会在步骤中将 k 变量增加 1。
在输出中,用户可以看到 for 循环运行了 5 次代码,该代码写在 for 循环的范围内。
// 使用 for 循环多次打印消息 for (let k = 1; k <= 5; k = k + 1) { console.log("printing the message for " + k + "time"); }
编译后,它负责生成以下 JavaScript 代码 -
// 使用 for 循环多次打印消息 for (var k = 1; k <= 5; k = k + 1) { console.log("printing the message for " + k + "time"); }
输出
上述代码将产生以下输出 -
printing the message for 1time printing the message for 2time printing the message for 3time printing the message for 4time printing the message for 5time
示例 2
在下面的示例中,我们演示了 break 和 continue 关键字在 for 循环中的使用。用户可以看到我们在 for 循环的终止条件中写入了 true。因此,它永远不会停止循环。
我们使用了'break'关键字来停止其中的 for 循环。在输出中,用户可以观察到 for 循环不会执行 k==1 的代码,而是跳转到下一次迭代。
for (let k = 0; true; k++) { // 如果 k 的值==1,循环将跳转到 // 下一次迭代而不执行下面的代码 if (k == 1) { continue; // for 循环中的终止条件 } else if (k == 6) { break; } else { // 要执行的代码 console.log("可迭代对象 k 的值为 " + k); } }
编译后,它将生成以下 JavaScript 代码 -
for (var k = 0; true; k++) { // 如果 k 的值==1,循环将跳转到 // 下一次迭代而不执行以下代码 if (k == 1) { continue; // for 循环中的终止条件 } else if (k == 6) { break; } else { // 要执行的代码 console.log("可迭代对象 k 的值为 " + k); } }
输出
上述代码将产生以下输出 −
可迭代 k 的值为 0 可迭代 k 的值为 2 可迭代 k 的值为 3 可迭代 k 的值为 4 可迭代 k 的值为 5
for-of 循环简介
for-of 循环是 for 循环的子类型。我们可以使用 for-of 循环来迭代可迭代对象的值。例如,我们可以使用 for-of 循环来迭代数组并从每个索引获取值。
与 for 循环相比,for-of 循环提供了一种更简单的语法来迭代可迭代对象。
语法
您可以按照以下语法使用 for-of 循环来迭代可迭代对象。
for (let element of iterableArray) { // 使用元素执行某些操作 }
在上述语法中,元素是数组元素。 for-of 循环从起始索引开始遍历每个数组元素。
示例
在下面的示例中,我们使用 for-of 循环遍历数组的每个值。由于字符串是 TypeScript 中的可迭代对象,因此我们使用 for-of 循环遍历字符串的每个字符。
我们可以在 for-of 循环块内对字符串字符或数组元素执行任何所需的操作。
// 创建 any 类型的可迭代数组 let iterableArray: any[] = [ 10, "Hi", "TutorialsPoint", 75, false, true, 87, "JavaScript", "TypeScript", ]; // 使用 for-of 循环遍历数组 for (let element of iterableArray) { console.log("element 的值为 " + element); } let str: string = "Welcome!"; // 遍历字符串的每个字符 for (let char of str) { console.log("char 为 " + char); }
编译后,它负责生成以下 JavaScript 代码 -
// 创建 any 类型的可迭代数组 var iterableArray = [ 10, "Hi", "TutorialsPoint", 75, false, true, 87, "JavaScript", "TypeScript", ]; // 使用 for-of 循环遍历数组 for (var _i = 0, iterableArray_1 = iterableArray; _i < iterableArray_1.length; _i++) { var element = iterableArray_1[_i]; console.log("element 的值为 " + element); } var str = "Welcome!"; // 遍历字符串的每个字符 for (var _a = 0, str_1 = str; _a < str_1.length; _a++) { var char = str_1[_a]; console.log("char 为 " + char); }
输出
上述代码将产生以下输出 −
element 的值为 10 element 的值为 Hi element 的值为 TutorialsPoint element 的值为 75 element 的值为 false element 的值为 true element 的值为 87 element 的值为 JavaScript element 的值为 TypeScript char 为 W char 为 e char 为 l char 为 c char 为 o char 为 m char 为 e char 为 !
for-in 循环简介
for-in 循环的工作原理与 for-of 循环几乎相同。for-in 循环遍历对象键而不是对象值。当我们对数组使用 for-in 循环时,它会遍历数组索引。
语法
您可以按照以下语法在 TypeScript 中使用 for-in 循环。
for (let element in iterable) { // element 可以是对象键或数组索引 }
示例
在此示例中,我们创建了对象并使用 for-in 循环遍历每个对象的属性。在输出中,我们可以看到 for-in 循环打印了所有对象属性。
// 使用不同的键值对创建对象 let obj = { obj_name: "Shubham", hair_color: "black", eye_color: "black", }; // 获取对象的所有键 for (let key in obj) { console.log("key 键是 " + key); }
输出
编译后,它将在 JavaScript 中生成相同的代码。
它将产生以下输出 −
key 键是 obj_name key 键是 hair_color key 键是 eye_color
我们已经了解了 TypeScript 中 for 循环的不同子类型。但是,无论我们可以用 for-of 和 for-in 循环做什么,我们都可以使用普通的 for 循环,但 for-of 和 for-in 循环为迭代可迭代对象提供了清晰的语法和编码迭代。
此外,for-of 循环和 for-in 循环之间的区别在于 for-of 循环迭代可迭代对象的值,而 for-in 循环迭代可迭代对象的属性。