再帰とスタック

反復処理の実装

反復的な考え方: ループ

function pow(x, n) {
	let result = 1;

	for (let i = 0; i < n; i++) {
		result *= x;	
	}
	
	return result;
}

console.log(pow(2, 3)); // 8

再起的な考え方: メソッド自身を呼び出す

function pow(x, n) {
	if (n == 1) {
		return x;
	}
	return x * pow(x, n -1);
}

console.log(2, 3); // 8

残りのパラメータとスプレッド演算子

残りパラメータ

分割代入で利用されている...

メソッドの引数に利用することで可変の値を受け取ることができる

function sumAll(...args) { 
  let sum = 0;

  for (let arg of args) sum += arg;

  return sum;
}

console.log( sumAll(1) ); // 1
console.log( sumAll(1,2,3) ); // 6

スプレッド演算子

配列、オブジェクトを展開する

let arr = [3,5,1];
console.log( Math.max(...arr) ): //5

配列/オブジェクトのコピー

スプレッド演算子を使用した配列/オブジェクトのコピーは参照ではなく実体をコピーしている

let arr = [1,2,3];
let arrTest = [...arr];

console.log(arr === arrTest); //false

スケジューリング:setTimeoutとsetInterval