Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
JavaScript 应用程序是由许多语法正确的语句组成的。单个语句可以跨多行。如果每个语句用分号隔开,那么多个语句可以在一行中出现。本页的内容并不是一个关键字,而是一组关键字。
若需要按字母顺序排列的列表,请参阅左侧边栏。
指定函数要返回的值。
break终止当前的循环,switch 或标签语句,使程序跳到终止的语句之后的语句执行。
continue终止当前或标签循环的当前迭代,直接执行下一个迭代循环。
throw抛出一个用户定义的异常。
if...else如果指定的条件为真,则执行相匹配的一个语句;若为假,则执行另一个语句。
switch计算表达式,将子句与表达式的值做匹配,执行与该值相关联的语句。
try...catch标记一个语句块,并指定语句抛出异常时的错误处理代码。
声明一个变量,可同时将其初始化为一个值。
let声明一个块级作用域的本地变量,可同时将其初始化为一个值。
const声明一个只读的命名常量。
声明一个指定参数的函数。
function*生成器函数使编写迭代器更容易。
async function使用指定的参数声明一个异步函数。
async function*异步生成器函数使编写异步迭代器更容易。
class声明一个类。
创建一个循环来执行指定语句,直到测试条件的求值为假。先执行语句,再对条件表达式求值,指定语句至少会执行一次。
for创建一个由三个可选的表达式(用括号包裹,分号分割)组成的循环,并在循环体中执行语句。
for...in无序遍历对象的可枚举属性。语句针对每个唯一的属性。
for...of遍历可迭代对象(包括 数组、类数组对象、迭代器和生成器),对每个不同的属性的值,调用一个自定义的带有要执行的语句的迭代钩子。
for await...of遍历异步可迭代对象、类数组对象、迭代器和生成器,对每个不同的属性的值,调用一个自定义的带有要执行的语句的迭代钩子。
while创建一个执行指定语句的循环,直到测试条件的求值为假。先对条件进行求值,再执行语句。
空语句,用于不在 JavaScript 语法期望有语句的地方提供语句。
块语句块语句,用于将零个或多个语句组合在一起。块由一对花括号括起来。
表达式语句表达式语句计算表达式的值并丢弃其结果。它允许表达式产生副作用,例如执行函数或更新变量。
debugger调用可用的调试功能。如果没有调试功能可用,该语句不生效。
export用来导出函数,以便这些函数能够被导入到外部模块或其他脚本中。
import用来引入外部的模块或另一个脚本中导出的函数。
label提供带标识的语句,与 break 或 continue 语句一起使用。
with拓展一个语句的作用域。
在本节内容中,我们将混合两种结构:语句和声明。它们是两套不相关的语法。以下是声明:
上面列出的除声明之外的其他内容都是语句。
术语“语句”和“声明”在 JavaScript 的正式语法中具有精确的含义,这会影响它们在代码中的位置。例如,在大多数控制流程结构中,其主体只接受语句——如 if...else 的两个分支:
如果使用声明而不是语句,则会产生语法错误。例如,let 声明不是语句,所以不能将其用作 if 语句的主体。
另一方面,var 是一个语句,所以你可以将其单独用作 if 主体。
你可以将声明看作“绑定标识符到值”的过程,而语句则是“执行操作”的过程。var 语句的特殊性在于它不遵循正常的词法作用域规则,这可能会产生副作用——例如,创建全局变量、修改已存在的 var 定义的变量、定义可在其块之外可见的变量(这是因为 var 定义的变量并不是块作用域的)。
在另一个例子中,标签只能附加到语句上。
备注:有一种遗留语法允许函数声明具有标签,但它只是为了与 web 现实兼容而进行了标准化。
为了解决这个问题,你可以将声明括在大括号中——这使其成为块语句的一部分。
启用 JavaScript 以查看此浏览器兼容性表。