JavaScript循环详解与实战练习

需积分: 0 0 下载量 93 浏览量 更新于2024-08-04 收藏 2KB MD 举报
"JavaScript循环是编程中常用的一种控制流结构,用于重复执行一段代码,直到满足特定条件为止。本文主要介绍了JavaScript中的四种基本循环类型:for循环、for...in循环、while循环以及do...while循环,并提供了相关的语法规则和功能解释。此外,还提到了在循环中控制流程的两个关键字:break和continue。最后,为了巩固理解,文章给出了六个课后练习题目,涵盖了各种循环的应用场景。" ### JavaScript循环详解 #### 1. for循环 for循环是最常用的循环类型,其基本语法如下: ```javascript for(初始化; 条件; 更新){ // 循环体代码 } ``` - 初始化:在循环开始前执行一次,通常用来设置初始值。 - 条件:定义循环执行的条件,如果条件为真,则执行循环体。 - 更新:每次循环结束后执行,通常用来更新计数器或变量。 #### 2. for...in循环 for...in循环用于遍历对象的所有可枚举属性,语法如下: ```javascript for(var x in obj){ // 访问对象属性 } ``` - x:存储遍历到的当前属性名。 - obj:要遍历的对象。 #### 3. while循环 while循环在满足条件时持续执行,语法如下: ```javascript while(条件){ // 循环体代码 } ``` - 条件:在每次循环开始时检查,如果为真,则执行循环体。 #### 4. do...while循环 do...while循环至少会执行一次循环体,然后再检查条件,语法如下: ```javascript do{ // 循环体代码 } while(条件); ``` - 条件:在循环体执行后检查,如果为真,则继续执行下一轮循环。 #### 控制循环流程的关键字 - `break`:跳出当前循环,执行循环后面的代码。 - `continue`:结束当前迭代,跳到下一次循环的开始。 ### 课后练习解析 1. 使用for循环输出1到100之间的偶数: ```javascript for(let i = 1; i <= 100; i++) { if(i % 2 === 0) { console.log(i); } } ``` 2. 使用while循环输出1到100之间与7取余等于4的数字: ```javascript let i = 1; while(i <= 100) { if(i % 7 === 4) { console.log(i); i++; } else { i++; } } ``` 3. 使用while循环i从1到50,25之前输出i的值,25及以后输出i乘以10的值: ```javascript let i = 1; while(i <= 50) { if(i < 25) { console.log(i); } else { console.log(i * 10); } i++; } ``` 4. 报7游戏的安全数(略,因为涉及到交互,无法直接展示代码结果)。 5. 输出等腰三角形(示例为5行的等腰三角形): ```javascript for(let i = 1; i <= 5; i++) { let spaces = ' '.repeat(5 - i); let stars = '*'.repeat(i * 2 - 1); console.log(spaces + stars); } ``` 6. 输出九九乘法表: ```javascript for(let i = 1; i <= 9; i++) { for(let j = 1; j <= i; j++) { console.log(`${j} * ${i} = ${i * j}`); } console.log(''); } ``` 以上就是对JavaScript循环的详细解析和课后练习的解答。掌握好这些基础知识,对于JavaScript编程至关重要。

import { Sha256 } from '@aws-crypto/sha256-js' import CryptoJs from 'crypto-js' import encHex from 'crypto-js/enc-hex' onmessage = async function (event) { const data = event.data // 获取文件数据 // chunk方式读取文件 const chunkSize: number = 1024 * 1024 // 每次读取1MB const fileSize: number = data.size // 文件大小 let offset: number = 0 // 偏移量 const createSha256Uint8Array32 = new Sha256() // SHA256 Unit8Array(32) const createSha1 = CryptoJs.algo.SHA1.create() // SHA1 Hex const createSha256 = CryptoJs.algo.SHA256.create() // SHA256 Hex const createSha512 = CryptoJs.algo.SHA512.create() // SHA512 Hex const createMD5 = CryptoJs.algo.MD5.create() // MD5 while (offset < fileSize) { const chunk = new Uint8Array(await data.slice(offset, offset + chunkSize).arrayBuffer()) // 读取chunkSize大小的文件块 const wordArray = CryptoJs.lib.WordArray.create(chunk) createSha256Uint8Array32.update(chunk) createSha1.update(wordArray) createSha256.update(wordArray) createSha512.update(wordArray) createMD5.update(wordArray) offset += chunkSize // 计算进度 // const progress = Math.min(100, Math.round((offset / fileSize) * 100)) // 计算进度 // console.log(progress) // 打印进度 // postMessage({ progress, offset, fileSize }) // 将进度发送给主线程 } const [sha256Uint8Array32, sha1, sha256, sha512, md5] = await Promise.all([ createSha256Uint8Array32.digest(), // SHA256 Unit8Array(32) encHex.stringify(createSha1.finalize()), // SHA1 Hex encHex.stringify(createSha256.finalize()), // SHA256 Hex encHex.stringify(createSha512.finalize()), // SHA512 Hex encHex.stringify(createMD5.finalize()), // MD5 ]) const obj = { md5, // MD5 sha1, // SHA1 Hex sha256, // SHA256 Hex sha512, // SHA512 Hex sha256Int8Array32: Array.from(new Int8Array(sha256Uint8Array32)), // SHA256 Int8Array(32) } console.log(obj) // 打印结果对象 postMessage(obj) // 将结果对象发送给主线程 } 增加功能计算 sm3

2023-06-07 上传
2023-05-30 上传