■イテレータ
→コードが長くなってしまうので、ジェネレーターを理解するために、このコードも理解しておくこと
function genIterator(max){
// valueとなる値を初期化しておく
let i = 0;
return {
// next関数を初期化する
next: function(){
return {
// done をfalseにしておく
// もしも回数を宣言したい場合はifとdone: trueを組み合わせること
done: false,
// 呼び出されるたびにインクリメントしていく
value: i++
}
}
}
}
■ジェネレーター
→イテレータを生成する特別な関数
// functionの後ろに「*」を書くことによりジェネレーターとする
function* gen(){
// 値を生成していく
yield 1;
yield 2;
// returnが最後の値となる
return 3;
}
const it = gen();
console.log(it.next())
console.log(it.next())
// ここまでは値があるので、nextが使える
console.log(it.next())
// 4以上は宣言されていないので、valueがundefinedとなり、doneがtrueとなる
console.log(it.next())
■スプレッド演算子
→反復、列挙が可能なオブジェクトを展開するもの
const arry1 = [1,2,3,4,5];
// スプレッド演算子でarry1と同じarry2を宣言する
// 可変長の物の時に使用する
const arry2 = [...arry1];
// 中身は同じだが別のメモリを参照しているので、結果はfalseとなる
console.log(arry1 === arry2)