运算符与流程控制

运算符

赋值运算符

使用 = 进行变量赋值

算术运算符

包括以下几种算术运算符。

运算符说明
*乘法
/除法
+加法
-减法
%取余数

复合运算符

可以使用 =、/=、+=、-=、%= 简写算术运算。即 n=2 等同于 n=n*2。

一元运算符

  1. 前置操作

++n 就是 n=n+1 的简写形式。

  1. 后置操作

后置操作会在表达式最后执行。

比较运算符

运算符说明
>大于
<小于
>=大于或等于
<=小于等于
==强制类型转换比较
===不强制类型转换比较

逻辑运算符

  1. 逻辑与

使用 && 符号表示逻辑与,指符号两端都为 true 时表达式结果为true。

  1. 逻辑或

使用 || 符号表示逻辑或,指符号左右两端有一方为true,表达式即成立。

  1. 逻辑非

使用 ! 符号表示逻辑非,即原来是true转变为false,反之亦然。

  1. 优先级

下列中因为 && 的优先级高所以结果是 true。

console.log(true || false && false)

可以使用 () 来提高优先级

console.log((true || false) && false)
  1. 短路运算

下例中 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 每次循环取其中的值而不是索引。

贡献者: mankueng