逻辑运算符
流程控制的关键,掌管进退的神
一般用于编写复合逻辑
与 &&
需要满足同时成立
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}个包子`)
}