流程控制
逻辑运算符 流程控制的关键,掌管进退的神 一般用于编写复合逻辑 与 && 需要满足同时成立 const name = "fengfeng" const age = 12 console.lo

流程控制

发布时间:2024-07-01 (2024-07-01)

逻辑运算符

流程控制的关键,掌管进退的神

一般用于编写复合逻辑

与 &&

需要满足同时成立

const name = "fengfeng"
const age = 12
console.log(age >= 18 && name.startsWith("f"))

或 &&

满足其中一个条件成立即可

const name = "fengfeng"
const age = 12
console.log(age >= 18 || name.startsWith("f"))

非 !

console.log(!(age >= 18) )

逻辑短路

&&: 如果前面的条件是false,那就不会去判断后面的条件了

||:如果前端的条件是true,那就不会去判断后面的条件了

如何验证

function t(){
    console.log("t")
    return true
}

console.log(-1>0 && t()) // 不会执行t
console.log(1>0 || t()) //  不会执行t

判断语句

if语句

// 条件成立执行代码,否则什么也不做
if (条件表达式) {
// 条件成立执行的代码语句
}

判断条件是一个布尔值,当该值为true时,执行 {} 中的代码段,否则不进行任何处理。 当代码段中只有一条语句时,{} 可以省略。

单分支

const name = "fengfeng"
if (name === "fengfeng") {
    console.log("去度假")
}

// 如果代码语句只有一行,可以省略{}
if (name === "fengfeng")
    console.log("去度假")
console.log("不管什么我都会执行")

双分支

if (name === "fengfeng"){
    console.log("fengfeng去度假")
}else {
    console.log("fengfeng继续搬砖")
}

多分支

const scope = 90
if (scope >= 90) {
    console.log("A")
} else if (scope >= 80) {
    console.log("B")
} else if (scope >= 60) {
    console.log("C")
} else {
    console.log("D")
}

分支嵌套

if (scope >= 80){
    if (scope >= 90){
        console.log("A")
    }else {
        console.log("B")
    }
}else {
    if (scope >= 60){
        console.log("C")
    }else {
        console.log("D")
    }
}

分支优化

 function get_scope(scope){
    if (scope >= 90){
        console.log("A")
        return
    }
    if (scope >= 80){
        console.log("B")
        return;
    }
    if (scope >= 60){
        console.log("C")
        return;
    }
    console.log("D")
    
}

switch语句

switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch。

switch (表达式的或变量) {
    case  值1:    // 表达式的或变量的值 === 值1    (全等比较)
        代码块;
        break;
    case  值2:    // 表达式的或变量的值 === 值2    (全等比较)
        代码块;
        break;
    ....
    default:
        以上条件都不成立,执行此代码块
        [break];
}

注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句。

const day = 7

switch (day) {
    case 1:
        console.log("周一")
        break
    case 2:
        console.log("周二")
        break
    case 3:
        console.log("周三")
        break
    case 4:
        console.log("周四")
        break
    case 5:
        console.log("周五")
        break
    case 6:
        console.log("周六")
        break
    case 7:
        console.log("周天")
        break
    default:
        console.log("错误")
}

循环语句

传统for循环

// 1+2+...+100
let sum = 0
for (let i = 1; i <= 100; i++) {
    // 循环体
    sum += i // sum = sum+1
}
// i=1  sum = 0 + 1
// i=2 sum = 1+2
// i=3 sum = 3 + 3
// i=4 sum = 6 + 4
// ...
console.log(sum)

for in循环

for...in循环可以用来遍历对象的可枚举属性列表(包括原型链上的属性)

用于遍历对象

const obj = {
    name:"枫枫",
    age: 21
}
for (const objKey in obj) {
    console.log(objKey)
}

for of循环

用于遍历数组

const array = ["枫枫", "张三"]
for (const item of array) {
    console.log(item)
}

while循环

语法

while (条件){
    //循环体
}
// 1 + 2 + ... + 100

let i = 1
let result = 0

while (i <= 100){
    // 循环体
    result += i
    i ++
}
console.log(result)

do while循环

先执行一次循环体,再进行条件判断

do {
//循环体代码--条件表达式为true 时重复循环体代码
} while (条件表达式)
 // 1 + 2 + ... + 100
let o = 1
let res = 0
do {
    res += o
    o ++
}while (o <= 100)

console.log(res)

continue

跳过本次循环,继续下一个循环

例如,吃5个包子,吃到第3个发现里面有半个虫子,这个包子就不吃了,继续吃下一个。

for (let j = 1; j <= 10; j++) {
    if (j === 3){
        console.log(`吃到第${j}个包子,发现虫子,这个包子我不吃了`)
        continue
    }
    console.log(`吃到第${j}个包子`)
}

break

跳出整个循环

例如,吃5个包子,吃到第3个发现里面有半个虫子,这盘都不吃了。

for (let j = 1; j <= 10; j++) {
    if (j === 3){
        console.log(`吃到第${j}个包子,发现虫子,我都不吃了`)
        break
    }
    console.log(`吃到第${j}个包子`)
}