语句

if 语句

条件判断语句

if (condition) statement else statement2

do-while 语句

先执行一次循环体,再检测退出条件

do {
  statement
} while (expression)

while 语句

先检测退出条件,再执行循环体

while (expression) {
  statement
}

for 语句

for (initialization; expression; post-loop-expression) {
  statement
}

for-in 语句

一种严格的迭代语句,用于枚举对象中的非符号键属性

ECMAScript 中对象的属性是无序的,因此 for-in 语句不能保证返回对象属性的顺序,根据浏览器而异。

如果 for-in 循环要迭代的变量是 null 或 undefined,则不执行循环体。

for (property in expression) statement

for-of 语句

一种严格的迭代语句,用于遍历可迭代对象的元素

for-of 循环会按照可迭代对象的 next()方法产生值的顺序迭代元素。

如果尝试迭代的变量不支持迭代,则 for-of 语句会抛出错误。

for (property of expression) statement

ES2018对for-of语句进行了扩展,增加了for-await-of循环,以支持生成期约(promise)的异步可迭代对象。

标签语句

break 立即退出循环,强制执行循环之后的语句。

continue 立即退出循环,执行下一次循环内容。

with 语句

将代码作用域设定为特定的对象。

// with (expression) statement

let qs = location.search.substring(1)
let hostName = location.hostname
let url = location.href

// 等同上方
with(location) {
  let qs = search.substring(1)
  let hostName = hostname
  let url = href
}

with 语句连接 location 对象。在语句内部,每个变量首先被认定为局部变量,其次会搜索 location 对象,看是否具有同名属性,若有,则被求值为 location 对象的属性。

❌ 严格模式不允许使用 with 语句,否则会报错。

switch 语句

流控制语句一种。

条件的值可以使用字符串甚至对象;可以是常量,也可以是变量或表达式;

比较每个条件时,会使用全等操作符,不会强制转换数据类型。

switch (expression) {
  case value1:
    statement
    break
  case value2:
    statement
    break
  case value3:
    statement
    break
  case value4:
    // value4 跟 value5 执行相公内容
  case value5:
    statement
    break
  default:
    statement
}