JS中for循环的四种写法示例(入门级)
作者:Phantomlsh
1. 传统for循环
for (init; cond; inc) { // body }
与C++或Java类似,for关键字后用小括号描述循环设置,在小括号中用两个分号;将循环设置隔断为三个部分,分别为:
- init初始化语句(指令),在整个循环开始前执行
- cond条件(逻辑表达式),表示循环继续的条件
- inc自增语句(指令),在每次循环体结束以后执行
整个循环的执行步骤为:
- 执行init语句
- 计算cond表达式,若为假则退出循环
- 执行循环体body
- 执行inc语句,随后返回步骤2
例如:
let sum = 0 for (let i = 1; i <= 10; i++) { sum += i } console.log(sum) // 55
2. for of 循环
for (const v of iterable) { // body }
这里的iterable是指各种能够被迭代的JS对象。最常用的例子是数组Array和字符串String,此外还有arguments、NodeList、Map、Set等等。执行的效果是,for循环会遍历iterable的每个项目,在每次循环中,代表变量v即为当前循环的项目。
例如:
const arr = [1, 2, 3, 4, 5] let sum = 0 for (const v of arr) { sum += v } console.log(sum) // 15
高级:for await (const v of iterable) 可以用于异步循环遍历。
3. for in 循环
for (const k in object) { // body }
for in循环会遍历object的每个属性,在每次循环中,代表变量k即为当前属性的属性名称(key)。
例如:
const obj = { a: 1, b: 2, c: 3 } let sum = 0 for (const k in obj) { sum += obj[k] // read the value from key } console.log(sum) // 6
特别注意for of和for in的区别,前者的代表变量是项目的值(value),后者的代表变量是属性的名称(key)。
4. forEach方法
Array.forEach(Function)
forEach是JS数组的原生方法。它接受一个函数作为参数,执行效果是对数组的每一个项目,执行传入的函数。传入的函数可以接受三个参数:(element, index, array),其中element表示当前项目的值,index表示当前项目的下标,array表示循环的数组本身。
例如:
const arr = [1, 2, 3, 4, 5] let sum = 0 arr.forEach(element => sum += element) console.log(sum) // 15
通常在程序中我们更倾向于使用for of循环来代替forEach方法,因为for关键字使得代码的可读性更高。但是在一些特殊的情况下,我们依然会使用forEach方法循环遍历数组中的每个项目。
高级:forEach可以传入异步函数,等效于使用for await (const v of Array)。
附完整实例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> // 此处添加测试数组 textArr var textArr = [], i = 0; while (i<40000000) { textArr.push(i) i++ } const forTest = (textArr) => { console.time('time forTest') var newArr = [] // 第一种写法 不带声明变量的写法 (运行效率最好,性能最佳) for (var i = 0; i < textArr.length; i++) { newArr.push(i) } console.timeEnd('time forTest') } const forTest1 = (textArr) => { console.time('time forTest1') var newArr = [] // 第二种带声明变量的写法 (相比之下要差一些) for (var i = 0,len = textArr.length; i < len; i++) { newArr.push(i) } console.timeEnd('time forTest1') } const forTest2 = (textArr) => { console.time('time forTest2') var newArr = [] // 第三种 forEach的写法 (效率最差,运行最慢) textArr.forEach(item => { newArr.push(item) }) console.timeEnd('time forTest2') } const forTest3 = (textArr) => { console.time('time forTest3') var newArr = [] // 第四种是 for循环的简便写法, (运行效率与不带声明变量的写法相差无几,相比之下,可以使用这种写法,最优),仅仅是本人的观点 for (var i = 1,cur; cur = textArr[i++];) { newArr.push(i) } console.timeEnd('time forTest3') } forTest(textArr) forTest1(textArr) forTest2(textArr) forTest3(textArr) </script> </body> </html>
总结
到此这篇关于JS中for循环的四种写法的文章就介绍到这了,更多相关JS for循环写法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!