语句和声明
JavaScript 应用程序由具有适当语法的语句组成。单个语句可能跨越多行。如果每个语句都用分号隔开,则多行语句可能会出现在同一行上。这不是关键字,而是一组关键字。
按类别分类的语句和声明
有关字母顺序排列的列表,请参见左侧的侧边栏。
控制流
声明变量
函数和类
迭代
do...while
-
创建一个循环,该循环执行指定的语句,直到测试条件评估为假。条件是在执行语句后评估的,导致指定的语句至少执行一次。
为了
-
创建一个循环,该循环由三个可选表达式组成,这些表达式用括号括起来并用分号隔开,后面跟着在循环中执行的语句。
为了...在
-
以任意顺序迭代对象的枚举属性。对于每个不同的属性,都可以执行语句。
为了...of
-
迭代可迭代对象(包括 数组、类数组对象、迭代器和生成器),调用一个自定义迭代钩子,其中包含要为每个不同属性的值执行的语句。
为了等待...of
-
迭代异步可迭代对象、类数组对象、迭代器和生成器,调用一个自定义迭代钩子,其中包含要为每个不同属性的值执行的语句。
而
-
创建一个循环,该循环只要测试条件评估为真,就执行指定的语句。条件是在执行语句之前评估的。
其他
语句和声明之间的区别
在本节中,我们将混合使用两种类型的构造:语句 和 声明。它们是两个不相交的语法集。以下是声明
上面列表 中的所有其他内容都是语句。
术语“语句”和“声明”在 JavaScript 的正式语法中具有精确的含义,这会影响它们在代码中的放置位置。例如,在大多数控制流结构中,主体只接受语句,例如 if...else
的两个分支
if (condition)
statement1;
else
statement2;
如果使用声明而不是语句,则会是 SyntaxError
。例如,let
声明不是语句,因此您不能将其原始形式用作 if
语句的主体。
if (condition)
let i = 0; // SyntaxError: Lexical declaration cannot appear in a single-statement context
另一方面,var
是一个语句,因此您可以将其单独用作 if
主体。
if (condition)
var i = 0;
您可以将声明视为“绑定 标识符到值”,并将语句视为“执行操作”。var
是语句而不是声明的事实是一个特例,因为它不遵循正常的词法作用域规则,并且可能会产生副作用,即创建全局变量、更改现有的 var
定义的变量,以及定义在块之外可见的变量(因为 var
定义的变量不是块级作用域的)。
再举一个例子,标签 只能附加到语句。
label: const a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context
注意:有一个遗留语法允许 函数声明具有标签,但它只被标准化是为了与 Web 现实兼容。
为了解决这个问题,您可以将声明括在花括号中,这会使它成为 块语句 的一部分。
label: {
const a = 1;
}
if (condition) {
let i = 0;
}
浏览器兼容性
BCD 表只在启用 JavaScript 的浏览器中加载。