[JavaScript基礎]學習①⑨--generator
generator 可以返回多次的函式
function* foo(x) {
yield x + 1;
yield x + 2;
return x + 3;
}
舉列 斐波那契數列
function fib(max) {
var
t,
a = 0,
b = 1,
arr = [0, 1];
while (arr.length < max) {
t = a + b;
a = b;
b = t;
arr.push(t);
}
return arr;
}
// 測試:
fib(5); // [0, 1, 1, 2, 3]
fib(10); // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
function* fib(max) {
var
t,
a = 0,
b = 1,
n = 1;
while (n < max) {
yield a;
t = a + b;
a = b;
b = t;
n ++;
}
return a;
}
呼叫generator物件
第一種
var f = fib(5);
f.next(); // {value: 0, done: false}
f.next(); // {value: 1, done: false}
f.next(); // {value: 1, done: false}
f.next(); // {value: 2, done: false}
f.next(); // {value: 3, done: true}
f.next().value
done表示這個generator是否已經執行結束
如果done為true,則value就是return的返回值
第二種
for (var x of fib(5)) {
console.log(x); // 依次輸出0, 1, 1, 2, 3
}
generator可以實現物件導向才能實現的功能
練習:自增ID
var current_id = 0;
function next_id() {
current_id ++;
return current_id;
}
'use strict';
function* next_id() {
var id = 1;
while (true) {
yield id++;
}
return true;
}
var g=next_id();
for(var x=1;x<10;x++){
alert(g.next().value);
}//1 2 3 4 5 6 7 8 9
// 測試:
var
x,
pass = true,
g = next_id();
for (x = 1; x < 100; x ++) {
if (g.next().value !== x) {
pass = false;
alert('測試失敗!');
break;
}
}
if (pass) {
alert('測試通過!');
}
相關文章
- JavaScript基礎——深入學習async/awaitJavaScriptAI
- JavaScript學習筆記——基礎部分JavaScript筆記
- Generator 基礎指南
- 學習筆記:javascript中的Generator函式筆記JavaScript函式
- 【JS基礎】從JavaScript中的for...of說起(上) - iterator 和 generatorJSJavaScript
- CTF入門學習5-> 前端JavaScript基礎前端JavaScript
- 重學javascript基礎-typeofJavaScript
- [譯] 在你學習 React 之前必備的 JavaScript 基礎ReactJavaScript
- 2021 年學習 React 的所需要的 JavaScript 基礎ReactJavaScript
- 免殺學習-基礎學習
- Linux基礎學習——檔案基礎Linux
- python基礎學習Python
- Redis 基礎學習Redis
- Linux基礎學習Linux
- Docker 基礎學習Docker
- Flume基礎學習
- 【Vue學習】基礎Vue
- jQuery基礎學習jQuery
- Scala基礎學習
- kafka基礎學習Kafka
- Zookeeper 基礎學習
- 深度學習基礎深度學習
- 學習linux基礎Linux
- Pandas基礎學習
- 【機器學習基礎】神經網路/深度學習基礎機器學習神經網路深度學習
- 學習前端你必須知道的JavaScript 基礎和HTML DOM前端JavaScriptHTML
- 黑馬pink JavaScript學習筆記_JS基礎 Day5JavaScript筆記JS
- 【ES6基礎】生成器(Generator)
- [Javascript] Generator & Iterators exerciseJavaScript
- JavaScript Generator 函式JavaScript函式
- javascript基礎JavaScript
- Python基礎學習篇Python
- Zookeeper學習——基礎框架框架
- python基礎學習1Python
- linux基礎命令學習Linux
- python基礎學習2Python
- 深度學習--RNN基礎深度學習RNN
- redis學習——基礎指令Redis
- YII-基礎學習