JavaScript--循环语句

分享
开发者 2024-9-27 23:38:49 70 0 来自 中国
一、循环语句的概念

1、循环语句,声明一组要反复实行的下令,直到满意某些条件为止。
2、循环包罗测试条件以及一个块(通常就是 { .. })。循环块的每次实行被称为一个迭代。
二、循环语句的种类

1、while语句

概念

while 语句是一种先测试循环语句,即先检测退出条件,再实行循环体内的代码。因此,while 循环体内的代码有大概不会实行。
语法

while(expression) statement实例

let i = 0; while (i < 10) {  i += 2; }在这个例子中,变量 i 从 0 开始,每次循环递增 2。只要 i 小于 10,循环就会继承。
2、do-while语句

概念

do-while 语句是一种后测试循环语句,即循环体中的代码实行后才会对退出条件举行求值。换句话说,循环体内的代码至少实行一次。
语法

do {  statement } while (expression);实例

let i = 0; do {  i += 2; } while (i < 10);在这个例子中,只要 i 小于 10,循环就会重复实行。i 从 0 开始,每次循环递增 2。
3、for语句

概念

for 语句也是先测试语句,只不外增长了进入循环之前的初始化代码,以及循环实行后要实行的表达式。
语法

for (initialization; expression; post-loop-expression) statement实例

let count = 10; for (let i = 0; i < count; i++) {  console.log(i); }以上代码在循环开始前界说了变量 i 的初始值为 0。然后求值条件表达式,如果求值结果为** true**(i < count),则实行循环体。因此循环体也大概不会被实行。如果循环体被实行了,则循环后表达式也会实行,以便递增变量 i。
三、注意

1、在 for 循环的初始化代码中,着实是可以不利用变量声明关键字的。不外,初始化界说的迭代器变量在循环实行完成后险些不大概再用到了。因此,最清晰的写法是利用 let 声明迭代器变量,如许就可以将这个变量的作用域限定在循环中。
2、初始化、条件表达式和循环后表达式都不是必需的。因此,可以创建一个无穷循环如下:
for (;;) { // 无穷循环 doSomething(); }3、如果只包罗条件表达式,那么 for 循环实际上就变成了 while 循环。如下:
let count = 10; let i = 0; for (; i < count; ) {  console.log(i);  i++; }4、do-while循环和while循环很相似。区别是在while循环里,先辈行条件判定再实行循环体中的代码,而在do-while循环里,是先实行循环体中的代码再判定循环条件。do-while循环至少会让循环体中的代码实行一次
5、循环语句皆可相互嵌套,但制止嵌套多层。
四、break和continue语句

1、作用

break 和 continue 语句为实行循环代码提供了更严格的控制本领。此中,break 语句用于立刻退出循环,欺压实行循环后下一条语句。而 continue 语句也用于立刻退出循环,但会再次从循环顶部开始实行。
2、实例

let num = 0; for (let i = 1; i < 10; i++) {  if (i % 5 == 0) {  break; }  num++; } console.log(num); // 4如果将 break 换成 continue,则会出现差别的结果:
let num = 0; for (let i = 1; i < 10; i++) {  if (i % 5 == 0) {  continue;  }  num++; } console.log(num); // 83、区别

1、break 语句可以立刻退出循环,克制再次反复实行任何代码。而 continue 语句只是退出当前循环,根据控制表达式还允许继承举行下一次循环。
2、break可以用于switch语句和循环语句中,而continue只能用于循环语句中。
五、循环语句的时间复杂度

1、时间复杂度界说

时间复杂度不代表代码实行的时间,算法的时间复杂度说的是一个算法的实行时间根据规模增长的一个趋势,而并不是代码实行的详细时间。
2、常见的时间复杂度

3、时间复杂度实例

常数阶

var sum = 0;for(var i=0;i<100;i++) {    sum += i;}固然有这么多行,纵然 for 循环实行了 100 次,但是代码的实行时间不随 n 的增大而增长,以是如许的代码复杂度就为 O(1)。
线性阶

for(let i = 0;i < n; i++){    let j = i;    j++;}这段代码在实行时,for循环内里的代码会实行n次,以是它斲丧的时间会随着n的厘革而厘革,如许的代码都可以用O(n)来表现。
对数阶

let i = 1; while(i < n) {       i = i * 2; }这段代码在实行时,while循环内里,每次都将 i * 2 ,乘完之后, i 会隔断 n 越来越近,不停到 i 大于 n 为止。如许的代码都可以用O(logN)来表现。
线性对数阶

for(let k = 0; k < n; k++) {    let i = 1;     while(i < n) {    i = i * 2;     } }线性对数阶O(nlogN) 着实非常容易明白,将时间复杂度为O(logn)的代码循环N遍的话,那么它的时间复杂度就是 n * O(logN),也就是了O(nlogN)。
平方阶乘

for(let i = 0; i < n; i++) {     for(let i = 1; i < n; i++) {        let j = i;         j++;    }}平方阶O(n²) 就更容易明白了,如果把 O(n) 的代码再嵌套循环一遍,它的时间复杂度就是 O(n²) 了。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 09:33, Processed in 0.158325 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表