Loading

Js流程控制

代码块

使用{}创建代码块,代码块可以对代码进行分组

{
    let a = 10
    console.log("代码块1",a) // 10
    
}

{
    let a = 20
    console.log("代码块2",a) // 20
}

{
  var b = 30
}
{
     console.log("代码块3",b)  // 30
}

let声明的变量具有块作用域,在代码块中声明的变量无法在代码块外部访问

var声明的变量不具有块作用域,可以在代码块外部访问

if语法

// if语句,如果if后面的表达式不是布尔值,会转换为布尔值再运算

if ("条件表达式"){
  console.log("代码块")
}
// if-else分支语句
if ("条件表达式1"){
    console.log("代码块1")
}else if("条件表达式1"){
   console.log("代码块2")
}else{
     console.log("代码块3")
}

执行流程(短路):

  • 自上向下依次对表达式进行求值判断,如果执行到结果为true,则执行对应代码块,后面的分支都不会执行,如果全部是false,执行else代码块

prompt()函数

用来获取用户输入的内容

let content = prompt("请输入内容:") //前端类型alert形式的弹窗输入框,默认类型是string

isNaN函数()

检查一个Number是不是NaN

let content = +prompt("请输入数字:")
// 代码块不会执行,因为NaN不和任何任何相等
if (content === NaN){
  console.log() 
}
// 检测content是不是NaN
if (isNaN(content)){
    console.log() 
}

switch语法

switch ("表达式"){
    case "表达式":
        console.log(1)
        break
    case "表达式1":
        console.log(2)
        break
    case "表达式2":
        console.log(3)
        break
}

switch语句在执行时,会依次将switch后的表达式和case后的表达式进行全等比较,如果比较结果为true,则自当前case处开始执行代码,如果比较结果为false,则继续比较其他case后的表达式,直到找到true为止,如果所有的比较都是false,则执行default后的语句

当比较结果为true时,会从当前case处开始执行代码,也就是说case是代码执行的起始位置,如果不写break,执行后续所有代码,不论case表达式是否相等,使用break,当前case执行完后不会继续向执行

循环语法

while循环
while ("循环表达式"){
    console.log("while")
}

语句在执行时,会先对条件表达式进行判断,如果结果为true,则执行循环体,执行完毕,继续判断,如果为true,则再次执行循环体,执行完毕,继续判断,直到条件表达式结果为false时,循环结束

do-while循环
do{
  console.log("do-while代码块")
}while("循环表达式")

do-while语句在执行时,会先执行do后的循环体,执行完毕后,会对while后的条件表达式进行判断,如果为false,则循环终止,如果为true,则继续执行循环体,以此类推

while语句是先判断再执行,do-while语句是先执行再判断(循环至少执行一次)

for循环
for("初始化表达表达式";"条件表达式";"更新表达式"){
  console.log("for循环代码块") 
}
for (let m = 0; m < 5; m++) {
    console.log(m)
}

// for循环语法中的表达式都可以进行省略,为空即可
let s = 0
for (;s<5;){
  s++
}
// 死循环
for (;;){
  console.log("死循环")
}

执行流程:

  1. 执行初始化表达式,初始化变量
  2. 执行条件表达式,判断循环是否执行(true执行,false终止)
  3. 判断结果为true,则执行循环体
  4. 执行更新表达式,对初始化变量进行修改
  5. 重复第二步,直到判断为false为止

break和continue
break

break用来终止switch和循环语句

let a = 10
for (; a < 20; a++) {
    if (a===15){
        break // a的值是15的时候,终止循环
    }
    console.log(a) // 10~14

}
continue

continue用来跳过当次循环,执行下一次循环

let a = 10
for (; a < 20; a++) {
    if (a%2 === 0){
        // a是偶数的时候,跳出本次循环,继续下一次循环
       continue
    }
    console.log(a) // 11、13、15、17、19

}

console.time() / console.timeEnd()

console.time()和console.timeEnd()是用于测量代码执行时间的方法

console.time("标识a") // 开始计时
// 代码块
console.timeEnd("标识a") // 结束计时

// 标识输入如果为空,则默认为default,如果自定义标识名,timeEnd标识要与time的标识一致,用于区分多对不同的计时
posted @ 2024-09-30 14:41  木子七  阅读(24)  评论(0)    收藏  举报