运算符与流程控制
运算符
赋值运算符
使用 = 进行变量赋值
算术运算符
包括以下几种算术运算符。
运算符 | 说明 |
---|---|
* | 乘法 |
/ | 除法 |
+ | 加法 |
- | 减法 |
% | 取余数 |
复合运算符
可以使用 =、/=、+=、-=、%= 简写算术运算。即 n=2 等同于 n=n*2。
一元运算符
- 前置操作
++n 就是 n=n+1 的简写形式。
- 后置操作
后置操作会在表达式最后执行。
比较运算符
运算符 | 说明 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于等于 |
== | 强制类型转换比较 |
=== | 不强制类型转换比较 |
逻辑运算符
- 逻辑与
使用 && 符号表示逻辑与,指符号两端都为 true 时表达式结果为true。
- 逻辑或
使用 || 符号表示逻辑或,指符号左右两端有一方为true,表达式即成立。
- 逻辑非
使用 ! 符号表示逻辑非,即原来是true转变为false,反之亦然。
- 优先级
下列中因为 && 的优先级高所以结果是 true。
console.log(true || false && false)
可以使用 () 来提高优先级
console.log((true || false) && false)
- 短路运算
下例中 a 为真值,就已经知道结果了就不会再判断 f 的值了。
let a = true, f = false
console.log(a || f)
流程控制
if
- 当条件为真时执行表达式代码块。
- 如果只有一条代码块,可以不用写 {}
点击查看示例
if () ...
if () {
...
}
if () {
...
} else {
...
}
if () {
...
} else if () {
...
}
三元表达式
是针对 if 判断的简写形式。
... ? ... : ...
switch
- 可以将 switch 理解为 if 的另一种结构清晰的写法。
- 如果表达式等于 case 中的值,将执行此 case 代码段
- break 关键字会终止 switch 的执行
- 没有任何 case匹配时将执行default 代码块
- 如果case执行后缺少break则接着执行后面的语句
case 合用示例
let error = 'warning'
switch (error) {
case 'notice':
case 'warning':
console.log('警告或提示信息')
break;
case 'error':
console.log('错误信息')
}
在switch 与 case 都可以使用表达式
switch (true) {
case age < 5:
...
}
缺少break 后,会接着执行后面的switch代码。
while
循环执行语句,需要设置跳出循环的条件否则会陷入死循环状态。
do/while
后条件判断语句,无论条件是否为真都会先进行循环体。
for
可以在循环前初始化初始计算变量。
for的三个参数可以都省略或取几个
let i = 1;
for (; i < 10; ) {
console.log(i++)
}
break/continue
break用于退出当前循环,continue用于退出当前循环返回循环起始继续执行。
label
标签(label) 为程序定义位置,可以使用continue/break跳到该位置。
下面取i+n 大于15时退出循环
mkimq: for (let i = 1; i <= 10; i++) {
mk: for (let n = 1; n <= 10; n++) {
if (n % 2 != 0) {
continue mk
}
console.log(i, n)
if (i + n > 15) {
break mkimq
}
}
}
for/in
用于遍历对象的所有属性,for/in主要用于遍历对象,不建议用来遍历数组。
for/of
用来遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构。
与 for/in 不同的是 for/of 每次循环取其中的值而不是索引。