mozilla

Compare Revisions

New in JavaScript 1.7

Change Revisions

Revision 51867:

Revision 51867 by Chuiwenchiu on

Revision 51868:

Revision 51868 by Chuiwenchiu on

Title:
New in JavaScript 1.7
New in JavaScript 1.7
Slug:
JavaScript/New_in_JavaScript/1.7
JavaScript/New_in_JavaScript/1.7
Tags:
JavaScript, JavaScript_version_overviews
JavaScript, JavaScript_version_overviews
Content:

Revision 51867
Revision 51868
n41      Consider this iterative algorithm that computes Fibonacci nn41      考慮一下使用迭代演算法來計算費伯納西數(Fibonacci):
>umbers: 
42    </p>
43    <pre>42    </p>
43    <pre>
44function do_callback(num) {44function '''do_callback(num)''' {
n51    do_callback(i);n51    '''do_callback(i);'''
n62      This code uses a callback routine to perform operations on n62      這個程式碼在每一次的迭代過程中使用 callback 程序。在這個案例中,每一個費伯納西數都只是簡單的列印到主控台(c
>each iterative step of the algorithm. In this case, each Fibonacc>onsole)。
>i number is simply printed to the console. 
63    </p>
64    <p>63    </p>
65      Generators and iterators work together to provide a new, be64    <p>
>tter, way to do this. Let's see how the Fibonacci number routine  
>looks written using a generator: 
65      Generators 和 iterators 協同運作可以提供更新更好的方式來完成這個工作。讓我們使用 Generat
 >or 方式來改寫這個程式:
n71    yield i;n71    '''yield i;'''
n79for (var i = 0; i &lt; 10; i++) {n79for ('''var i = 0; i &lt; 10; i++''') {
80  document.write(g.next() + "&lt;BR&gt;\n");80  document.write('''g.next()''' + "&lt;BR&gt;\n");
t83    <p>t
84      The function containing the <code>yield</code> keyword is a
> generator. When you call it, its formal parameters are bound to  
>actual arguments, but its body isn't actually evaluated. Instead, 
> a generator-iterator is returned. Each call to the generator-ite 
>rator's <code>next()</code> method performs another pass through  
>the iterative algorithm. Each step's value is the value specified 
> by the <code>yield</code> keyword. Think of <code>yield</code> a 
>s the generator-iterator version of <code>return</code>, indicati 
>ng the boundary between each iteration of the algorithm. Each tim 
>e you call <code>next()</code>, the generator code resumes from t 
>he statement following the <code>yield</code>. 
85    </p>83    <p>
84      這個函數包含 <code>yield</code> 關鍵字,是屬於一個 generator。 當你呼叫他時,他的介面參
 >數會與實際的參數產生關聯,但是此時他的程式實體並未被執行。取而代之的是回傳一個 generator-iterator。當你每次呼叫
 > generator-iterator 的<code>next()</code> 時候,會進行一次的迭代演算法運算。每一次迭代的值
 >是由 <code>yield</code> 關鍵字所指定。<code>yield</code> 可以想像成 <code>retur
 >n</code> 的 generator-iterator 版本,每一個迭代演算法之間都需要指定邊界條件。每一次你呼叫 <code
 >>next()</code>, generator 程式碼會繼續從 <code>yield</code> 下面開始執行。
86    <p>85    </p>
87      You cycle a generator-iterator by repeatedly calling its <c86    <p>
>ode>next()</code> method until you reach your desired result cond 
>ition. In this example, we can obtain however many Fibonacci numb 
>ers we want by continuing to call <code>g.next()</code> until we  
>have the number of results we want. 
87      你重複的呼叫 generator-iterator 的 <code>next()</code> 直到他滿足你要的結果為
 >止。在這個範例中,我們可以繼續呼叫 <code>g.next()</code> 來獲得更多的費伯納西數直到滿足我們所要的結果。

Back to History