目录
[if 语句](#if 语句)
[switch 语句](#switch 语句)
[while 循环](#while 循环)
[break 和 continue](#break 和 continue)
运算符
算术运算符
加减乘除大家都懂,说几个容易踩坑的地方:
console.log(1 + 2 * 3 / 2) // 4,先乘除后加减
console.log(5 % 3) // 2,取余数
取余这个操作挺有用的,比如判断一个数是不是偶数:
if (num % 2 === 0) {
console.log('这是个偶数')
}
还有个坑,计算失败会得到 NaN:
console.log('abc' - 2) // NaN,字符串减数字算不出来
console.log('abc' + 2) // 'abc2',加号变成字符串拼接了
赋值运算符的简写
let num = 10
num = num + 5 // 普通写法
num += 5 // 简写,效果一样
常用的就这几个: += 、 -= 、 *= 、 /= ,写多了就习惯了。
自增自减的坑
++ 和 -- 看着简单,但前置后置有区别:
let i = 1
console.log(i++) // 输出1,先用再加
console.log(i) // 输出2
let j = 1
console.log(++j) // 输出2,先加再用
单独用的时候没区别,但放在表达式里就容易晕。建议少写这种复杂的:
let i = 1
console.log(i++ + ++i + i) // 别这么写,过两天自己都看不懂
比较运算符
重点说下 == 和 === 的区别:
console.log(2 == '2') // true,会自动类型转换
console.log(2 === '2') // false,类型不同就是不同
强烈建议用 === ,少踩坑。还有个冷知识:
console.log(NaN === NaN) // false,NaN跟谁都不相等,包括自己
逻辑运算符
三个符号: && (与)、 || (或)、 ! (非)
口诀好记:
-
&& :一假则假
-
|| :一真则真
-
! :取反
let age = 25
console.log(age > 18 && age < 30) // true,在18到30之间
console.log(age < 18 || age > 60) // false,不在两个范围
console.log(!true) // false
流程控制
if 语句
单分支:
let score = 85
if (score >= 60) {
console.log('及格了')
}
双分支:
let score = 55
if (score >= 60) {
console.log('及格')
} else {
console.log('不及格,补考吧')
}
多分支:
let score = 75
if (score >= 90) {
console.log('优秀')
} else if (score >= 70) {
console.log('良好')
} else if (score >= 60) {
console.log('及格')
} else {
console.log('不及格')
}
有个小技巧,非布尔值也能放 if 里:
if (1) console.log('执行') // 数字非0就是true
if (0) console.log('不执行') // 0是false
if ('abc') console.log('执行') // 非空字符串是true
if ('') console.log('不执行') // 空字符串是false
三元运算符
简单的双分支可以用三元运算符简化:
let age = 20
let status = age >= 18 ? '成年' : '未成年'
等价于:
let status
if (age >= 18) {
status = '成年'
} else {
status = '未成年'
}
常用场景:补零
let num = 5
num = num < 10 ? '0' + num : num // '05'
switch 语句
适合多个固定值判断的情况:
let day = 3
switch (day) {
case 1:
console.log('周一')
break
case 2:
console.log('周二')
break
case 3:
console.log('周三')
break
default:
console.log('其他')
}
注意 break 不能少,不然会一直往下执行(叫 case 穿透)。
switch 和 if 的区别:
- switch 适合判断固定值
- if 适合判断范围
while 循环
重复执行某段代码:
let i = 1
while (i <= 5) {
console.log('第' + i + '次')
i++ // 别忘了自增,不然死循环
}
循环三要素:
- 初始值
- 终止条件
- 变量变化
break 和 continue
-
break :直接退出整个循环
-
continue :跳过本次,继续下一次
// 找到3就停
let i = 1
while (i <= 5) {
if (i === 3) {
break
}
console.log(i)
i++
}
// 输出:1 2// 跳过3
let j = 0
while (j < 5) {
j++
if (j === 3) {
continue
}
console.log(j)
}
// 输出:1 2 4 5
无限循环
有时候需要一直运行,直到满足某个条件才退出:
while (true) {
let answer = prompt('你爱我吗?')
if (answer === '爱') {
break
}
}