mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-12-15 23:37:25 +08:00
语法高亮,滚动条美化,设置页面调整
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div></div>
|
||||
<p> <strong><code>yield*</code> 表达式</strong>用于委托给另一个<a href="Reference/Statements/function*" title="function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个 Generator 对象。"><code>generator</code></a> 或可迭代对象。</p>
|
||||
<h2 id="Syntax" name="Syntax">语法</h2>
|
||||
<pre class="syntaxbox"> yield* [[expression]];</pre>
|
||||
<pre><code class="language-javascript"> yield* [[expression]];</code></pre>
|
||||
<dl>
|
||||
<dt><code>expression</code></dt>
|
||||
<dd>返回一个可迭代对象的表达式。</dd>
|
||||
@@ -13,7 +13,7 @@
|
||||
<h2 id="Examples" name="Examples">示例</h2>
|
||||
<h3 id="委托给其他生成器">委托给其他生成器</h3>
|
||||
<p>以下代码中,<code>g1()</code> <code>yield</code> 出去的每个值都会在 <code>g2()</code> 的 <code>next()</code> 方法中返回,就像那些 <code>yield</code> 语句是写在 <code>g2()</code> 里一样。</p>
|
||||
<pre class="brush: js">function* g1() {
|
||||
<pre><code class="language-javascript">function* g1() {
|
||||
yield 2;
|
||||
yield 3;
|
||||
yield 4;
|
||||
@@ -33,10 +33,10 @@ console.log(iterator.next()); // { value: 3, done: false }
|
||||
console.log(iterator.next()); // { value: 4, done: false }
|
||||
console.log(iterator.next()); // { value: 5, done: false }
|
||||
console.log(iterator.next()); // { value: undefined, done: true }
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="委托给其他可迭代对象">委托给其他可迭代对象</h3>
|
||||
<p>除了生成器对象这一种可迭代对象,<code>yield*</code> 还可以 <code>yield</code> 其它任意的可迭代对象,比如说数组、字符串、<code>arguments</code> 对象等等。</p>
|
||||
<pre class="brush: js">function* g3() {
|
||||
<pre><code class="language-javascript">function* g3() {
|
||||
yield* [1, 2];
|
||||
yield* "34";
|
||||
yield* arguments;
|
||||
@@ -51,10 +51,10 @@ console.log(iterator.next()); // { value: "4", done: false }
|
||||
console.log(iterator.next()); // { value: 5, done: false }
|
||||
console.log(iterator.next()); // { value: 6, done: false }
|
||||
console.log(iterator.next()); // { value: undefined, done: true }
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h3 id="yield*_表达式的值"><code>yield*</code> 表达式的值</h3>
|
||||
<p><code>yield*</code> 是一个表达式,不是语句,所以它会有自己的值。</p>
|
||||
<pre class="brush: js">function* g4() {
|
||||
<pre><code class="language-javascript">function* g4() {
|
||||
yield* [1, 2, 3];
|
||||
return "foo";
|
||||
}
|
||||
@@ -74,7 +74,7 @@ console.log(iterator.next()); // { value: undefined, done: true },
|
||||
// 此时 g4() 返回了 { value: "foo", done: true }
|
||||
|
||||
console.log(result); // "foo"
|
||||
</pre>
|
||||
</code></pre>
|
||||
<h2 id="Specifications" name="Specifications">规范</h2>
|
||||
<table class="standard-table">
|
||||
<thead>
|
||||
@@ -169,10 +169,10 @@ console.log(result); // "foo"
|
||||
<ul>
|
||||
<li>现在有行结束符限制。在 <code>yield</code> 和 <code>*</code> 之间不允许有换行符。如下代码会抛出<a href="Reference/Global_Objects/SyntaxError" title="SyntaxError 对象代表尝试解析语法上不合法的代码的错误。"><code>SyntaxError</code></a>:
|
||||
|
||||
<pre class="brush: js">function* foo() {
|
||||
<pre><code class="language-javascript">function* foo() {
|
||||
yield
|
||||
*[];
|
||||
}</pre>
|
||||
}</code></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user