Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
块语句用于将零个或多个语句组合在一起。块由一对大括号(“花括号”)界定,并包含零个或多个语句和声明。
块语句中的语句和声明
在其他语言中,块语句通常称为复合语句。它允许你在 JavaScript 期望仅一条语句的地方使用多条语句。在 JavaScript 中将语句组合成块是常见的做法,尤其是在与控制流语句(例如 if...else 和 for)一起使用时。使用空语句可以实现相反的行为,即在需要语句情况下不提供任何语句。
此外,结合使用块作用域声明(如 let、const 和 class),块可以防止临时变量污染全局命名空间,就像 IIFE(立即调用函数表达式)一样。
非严格模式下,使用 var 声明或由函数声明创建的变量不具有块级作用域。在块内部引入的变量的作用域限于包含的函数或脚本,并且对它们的设置会在块本身之外仍然有效。例如:
这段代码输出内容为 2,因为块内的 var x 语句与块之前的 var x 语句处于同一个作用域。
在非严格模式下,块内函数声明的行为很奇怪。请勿使用它们。
与之相反,使用 let、const 和 class 声明的标识符具有块级作用域。
x = 2 的作用域仅限于定义它的块内。
const 也是如此:
请注意,块作用域的 const c = 2 不会抛出 SyntaxError: Identifier 'c' has already been declared,因为它可以在块内唯一地声明。
在严格模式下,块内的函数声明的作用域是该块,并且会被提升到该块的顶部。
for 循环接受单个语句作为其循环体。
如果循环体中需要使用多个语句,可以将它们组合成一个块语句:
let 和 const 声明的作用域是其所在的块。这意味着你可以将数据隐藏在全局作用域之外,而无需将其包装在一个函数中。
| ECMAScript® 2027 Language Specification # sec-block |
启用 JavaScript 以查看此浏览器兼容性表。