aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/statements/index.html
blob: c6d70fce55a044747b03deda0541ee6f921e3c7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
title: 语句和声明
slug: Web/JavaScript/Reference/Statements
tags:
  - JavaScript
  - 参考
  - 声明
  - 语句和声明
translation_of: Web/JavaScript/Reference/Statements
---
<div>{{jsSidebar("Statements")}}</div>

<p>JavaScript 应用程序是由许多语法正确的语句组成的。单个语句可以跨多行。如果每个语句用分号隔开,那么多个语句可以在一行中出现。本页的内容并不是一个关键字,而是一组关键字。</p>

<h2 id="语句和声明(按类别分类)">语句和声明(按类别分类)</h2>

<p>若需要按字母顺序排列的列表,请参阅左侧边栏。</p>

<h3 id="控制流程"><span class="short_text" id="result_box" lang="zh-CN"><span>控制流程</span></span></h3>

<dl>
 <dt>{{jsxref("Statements/block", "Block")}}</dt>
 <dd>一个块语句可以用来管理零个或多个语句。该区块是由一对大括号分隔。</dd>
 <dt>{{jsxref("Statements/break", "break")}}</dt>
 <dd>终止当前的循环,switch 或 label 语句,使程序跳到下一个语句执行。</dd>
 <dt>{{jsxref("Statements/continue", "continue")}}</dt>
 <dd>终止执行当前或标签循环的语句,直接执行下一个迭代循环。</dd>
 <dt>{{jsxref("Statements/Empty", "Empty")}}</dt>
 <dd>空语句用来表示没有语句的情况,尽管 JavaScript 语法期望有语句提供。</dd>
 <dt>{{jsxref("Statements/if...else", "if...else")}}</dt>
 <dd>如果指定的条件是 true ,则执行相匹配的一个语句,若为 false,则执行另一个语句。</dd>
 <dt>{{jsxref("Statements/switch", "switch")}}</dt>
 <dd>计算表达式,将子句于表达式的值做匹配,执行与该值相关联的语句。</dd>
 <dt>{{jsxref("Statements/throw", "throw")}}</dt>
 <dd>抛出一个用户定义的异常。</dd>
 <dt>{{jsxref("Statements/try...catch", "try...catch")}}</dt>
 <dd>标记一个语句块,并指定一个应该抛出异常的反馈。(Marks a block of statements to try, and specifies a response, should an exception be thrown.)</dd>
</dl>

<h3 id="声明">声明</h3>

<dl>
 <dt>{{jsxref("Statements/var", "var")}}</dt>
 <dd>声明一个变量,可同时将其初始化为一个值。</dd>
 <dt>{{jsxref("Statements/let", "let")}}</dt>
 <dd>声明一个块级本地变量,可同时将其初始化为一个值。</dd>
 <dt>{{jsxref("Statements/const", "const")}}</dt>
 <dd>声明一个只读的命名常量。</dd>
</dl>

<h3 id="函数和类">函数和类</h3>

<dl>
 <dt>{{jsxref("Statements/function", "function")}}</dt>
 <dd>声明一个指定参数的函数。</dd>
 <dt>{{jsxref("Statements/function*", "function*")}}</dt>
 <dd>生成器函数使<a href="/zh-CN/docs/Web/JavaScript/Guide/The_Iterator_protocol">迭代器</a>更容易使用。</dd>
 <dt>{{jsxref("Statements/async_function", "async function")}}</dt>
 <dd>使用指定的参数声明一个异步函数。</dd>
 <dt>{{jsxref("Statements/return", "return")}}</dt>
 <dd>指定函数的返回值。</dd>
 <dt>{{jsxref("Statements/class", "class")}}</dt>
 <dd>声明一个类。</dd>
</dl>

<h3 id="迭代器">迭代器</h3>

<dl>
 <dt>{{jsxref("Statements/do...while", "do...while")}}</dt>
 <dd>创建一个循环来执行语句,直到该语句条件表达式的值为 false。先执行语句,再执行条件表达式,该语句至少会执行一次。</dd>
 <dt>{{jsxref("Statements/for", "for")}}</dt>
 <dd>创建一个由3个可选的表达式组成的循环,该循环用括号包裹,分号分割,并在循环体中执行语句。</dd>
 <dt>{{jsxref("Statements/for...in", "for...in")}}</dt>
 <dd>无序遍历对象的可枚举属性。语句针对每个唯一的属性。</dd>
 <dt>{{jsxref("Statements/for...of", "for...of")}}</dt>
 <dd>遍历可迭代的对象(包括 {{jsxref("Global_Objects/Array","数组")}}、类数组对象、<a href="/zh-CN/docs/JavaScript/Guide/Iterators_and_Generators">迭代器和生成器</a>),对每个不同属性的属性,调用一个自定义的有执行语句的迭代钩子。</dd>
 <dt>{{jsxref("Statements/for-await...of", "for await...of")}}</dt>
 <dd>在异步可迭代对象、类数组对象、<a href="/zh-CN/docs/JavaScript/Guide/Iterators_and_Generators">迭代器和生成器</a>上迭代,调用自定义迭代钩子,其中包含要为每个不同属性的值执行的语句。</dd>
 <dt>{{jsxref("Statements/while", "while")}}</dt>
 <dd>创建一个循环语句,循环会一直持续到该语句条件表达式的值为false。先执行条件表达式,然后执行语句。</dd>
</dl>

<h3 id="其他">其他</h3>

<dl>
 <dt>{{jsxref("Statements/debugger", "debugger")}}</dt>
 <dd>调用可用的调试功能。如果没有调试功能可用,该语句不生效。</dd>
 <dt>{{jsxref("Statements/export", "export")}}</dt>
 <dd>用来导出函数,以便这些函数能够被导入到外部模块或其他脚本中。</dd>
 <dt>{{jsxref("Statements/import", "import")}}</dt>
 <dd>用来引入外部的模块或另一个script中导出的函数。</dd>
 <dt><a href="/zh-CN/docs/Web/JavaScript/Reference/Statements/import.meta"><code>import.meta</code></a></dt>
 <dd>向 JavaScript 模块公开上下文特定的元数据的元属性。</dd>
 <dt>{{jsxref("Statements/label", "label")}}</dt>
 <dd>带标识的语句,与 <code>break</code><code>continue</code> 语句一起使用。</dd>
</dl>

<dl>
 <dt>{{jsxref("Statements/with", "with")}} {{deprecated_inline}}</dt>
 <dd>拓展一个语句的作用域。</dd>
</dl>

<h2 id="规范">规范</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">规范</th>
   <th scope="col">状态</th>
   <th scope="col">备注</th>
  </tr>
  <tr>
   <td>{{SpecName('ES1', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Initial definition</td>
  </tr>
  <tr>
   <td>{{SpecName('ES3', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES3')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-12', 'Statements')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>New: function*, let, for...of, yield, class</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-ecmascript-language-statements-and-declarations', 'ECMAScript Language: Statements and Declarations')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="浏览器兼容性">浏览器兼容性</h2>



<p>{{Compat("javascript.statements")}}</p>

<h2 id="参见">参见</h2>

<ul>
 <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Operators">表达式和操作符</a></li>
</ul>