Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 772043 of continue

  • 版本网址缩略名: Web/JavaScript/Reference/Statements/continue
  • 版本标题: continue
  • 版本 id: 772043
  • 创建于:
  • 创建者: tiansh
  • 是否是当前版本?
  • 评论

修订内容

{{jsSidebar("Statements")}}

概述

continue 语句结束当前(或标签)的循环语句的本次迭代,并继续执行循环的下一次迭代。

语法

continue [ label ];
label
标识标号关联的语句

描述

与 {{jsxref("Statements/break", "break")}} 语句的区别在于, continue 并不会终止循环的迭代,而是:

  • 在 {{jsxref("Statements/while", "while")}} 循环中,控制流跳转回条件判断;
  • 在 {{jsxref("Statements/for", "for")}} 循环中,控制流跳转到更新语句。

continue 语句可以包含一个可选的标号以控制程序跳转到指定循环的下一次迭代,而非当前循环。此时要求 continue 语句在对应的循环内部。

示例

例子:在 while 语句中使用 continue

下述例子展示了 {{jsxref("Statements/while", "while")}} 循环中 continue 语句的使用。当循环到 i 的值为 3 时,执行 continue 。 n 的值在几次迭代后分别为 1, 3, 7 和 12 .

i = 0;
n = 0;
while (i < 5) {
   i++;
   if (i === 3) {
      continue;
   }
   n += i;
}

例子:使用带标号的 continue

在下面的例子中,被标记为 checkiandj 的语句包含一个被标记为 checkj 的语句。当遇到continue 语句时,程序回到 checkj 语句的开始继续执行。每次遇到 continue 时,再次执行 checkj ,直到条件判断返回 false 。之后完成 checkiandj 语句剩下的部分。

但如果 continue 的标号被改为 checkiandj ,那程序将会从 checkiandj 语句的开始继续运行。

参考 {{jsxref("Statements/label", "label")}} 。

var i = 0, 
    j = 8;

checkiandj: while (i < 4) {
   console.log("i: " + i);
   i += 1;

   checkj: while (j > 4) {
      console.log("j: "+ j);
      j -= 1;
      if ((j % 2) == 0)
         continue checkj;
      console.log(j + " is odd.");
   }
   console.log("i = " + i);
   console.log("j = " + j);
}

输出:

"i: 0"

// start checkj
"j: 8"
"7 is odd."
"j: 7"
"j: 6"
"5 is odd."
"j: 5"
// end checkj

"i = 1" 
"j = 4" 

"i: 1"
"i = 2" 
"j = 4"

"i: 2"
"i = 3"
"j = 4"

"i: 3"
"i = 4"
"j = 4"

规范

Specification Status Comment
ECMAScript 1st Edition Standard Initial definition. Unlabeled version.
ECMAScript 3rd Edition Standard Labeled version added.
{{SpecName('ES5.1', '#sec-12.7', 'Continue statement')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-continue-statement', 'Continue statement')}} {{Spec2('ES6')}}  

浏览器兼容性

{{ CompatibilityTable() }}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }}
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }} {{ CompatVersionUnknown() }}

See also

  • {{jsxref("Statements/break", "break")}}
  • {{jsxref("Statements/label", "label")}}

修订版来源

<div>
<div>{{jsSidebar("Statements")}}</div>
</div>

<h2 id="Summary">概述</h2>

<p><strong>continue 语句</strong>结束当前(或标签)的循环语句的本次迭代,并继续执行循环的下一次迭代。</p>

<h2>语法</h2>

<pre class="syntaxbox">
continue [ label ];</pre>

<dl>
</dl>

<dl>
 <dt><code>label</code></dt>
 <dd>标识标号关联的语句</dd>
</dl>

<h2 id="Description" name="Description">描述</h2>

<p>与 {{jsxref("Statements/break", "break")}} 语句的区别在于, continue 并不会终止循环的迭代,而是:</p>

<ul>
 <li>在 {{jsxref("Statements/while", "while")}} 循环中,控制流跳转回条件判断;</li>
</ul>

<ul>
 <li>在 {{jsxref("Statements/for", "for")}} 循环中,控制流跳转到更新语句。</li>
</ul>

<p><code>continue</code> 语句可以包含一个可选的标号以控制程序跳转到指定循环的下一次迭代,而非当前循环。此时要求 <code>continue</code> 语句在对应的循环内部。</p>

<h2 id="Examples" name="Examples">示例</h2>

<h3 id="Example:_Using_continue_with_while" name="Example:_Using_continue_with_while">例子:在 <code>while</code> 语句中使用 <code>continue</code></h3>

<p>下述例子展示了 {{jsxref("Statements/while", "while")}} 循环中 <code>continue</code> 语句的使用。当循环到 <code>i</code> 的值为 3 时,执行 continue 。 n 的值在几次迭代后分别为 1, 3, 7 和 12 .</p>

<pre class="brush: js  language-js" data-number="">
<code class="language-js">i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
n <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   i<span class="token operator">++</span><span class="token punctuation">;</span>
   <span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> <span class="token number">3</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token keyword">continue</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   n <span class="token operator">+</span><span class="token operator">=</span> i<span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>

<h3 id="Example.3A_Using_continue_with_a_label">例子:使用带标号的 <code>continue</code></h3>

<p>在下面的例子中,被标记为 <code>checkiandj</code> 的语句包含一个被标记为 <code>checkj</code> 的语句。当遇到<code>continue</code> 语句时,程序回到 <code>checkj</code> 语句的开始继续执行。每次遇到 <code>continue</code> 时,再次执行 <code>checkj</code> ,直到条件判断返回 false 。之后完成 <code>checkiandj</code> 语句剩下的部分。</p>

<p>但如果 <code>continue</code> 的标号被改为 <code>checkiandj</code> ,那程序将会从 <code>checkiandj</code> 语句的开始继续运行。</p>

<p>参考 {{jsxref("Statements/label", "label")}} 。</p>

<pre class="brush: js  language-js" data-number="">
<code class="language-js"><span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> 
    j <span class="token operator">=</span> <span class="token number">8</span><span class="token punctuation">;</span>

checkiandj<span class="token punctuation">:</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>i <span class="token operator">&lt;</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">"i: "</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
   i <span class="token operator">+</span><span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>

   checkj<span class="token punctuation">:</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>j <span class="token operator">&gt;</span> <span class="token number">4</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">"j: "</span><span class="token operator">+</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>
      j <span class="token operator">-</span><span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
      <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>j <span class="token operator">%</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>
         <span class="token keyword">continue</span> checkj<span class="token punctuation">;</span>
      console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span>j <span class="token operator">+</span> <span class="token string">" is odd."</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
   <span class="token punctuation">}</span>
   console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">"i = "</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span>
   console<span class="token punctuation">.</span><span class="token function">log<span class="token punctuation">(</span></span><span class="token string">"j = "</span> <span class="token operator">+</span> j<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>

<p>输出:</p>

<pre class="brush: js  language-js" data-number="">
<code class="language-js"><span class="token string">"i: 0"</span>
<span class="token comment" spellcheck="true">
// start checkj
</span><span class="token string">"j: 8"</span>
<span class="token string">"7 is odd."</span>
<span class="token string">"j: 7"</span>
<span class="token string">"j: 6"</span>
<span class="token string">"5 is odd."</span>
<span class="token string">"j: 5"</span><span class="token comment" spellcheck="true">
// end checkj
</span>
<span class="token string">"i = 1"</span> 
<span class="token string">"j = 4"</span> 

<span class="token string">"i: 1"</span>
<span class="token string">"i = 2"</span> 
<span class="token string">"j = 4"</span>

<span class="token string">"i: 2"</span>
<span class="token string">"i = 3"</span>
<span class="token string">"j = 4"</span>

<span class="token string">"i: 3"</span>
<span class="token string">"i = 4"</span>
<span class="token string">"j = 4"</span></code></pre>

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

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>ECMAScript 1st Edition</td>
   <td>Standard</td>
   <td>Initial definition. Unlabeled version.</td>
  </tr>
  <tr>
   <td>ECMAScript 3rd Edition</td>
   <td>Standard</td>
   <td>Labeled version added.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-12.7', 'Continue statement')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-continue-statement', 'Continue statement')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>&nbsp;</td>
  </tr>
 </tbody>
</table>

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

<p>{{ CompatibilityTable() }}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
   <td>{{ CompatVersionUnknown() }}</td>
  </tr>
 </tbody>
</table>
</div>

<h2 id="See_also" name="See_also">See also</h2>

<ul>
 <li>{{jsxref("Statements/break", "break")}}</li>
 <li>{{jsxref("Statements/label", "label")}}</li>
</ul>
恢复到这个版本