JavaScriptの勉強

JavaScriptを勉強することにした。
無名関数で再帰できたりジェネレーターがあったりしてちょっとたのしい。

フィボナッチ

arguments.calleeを使うと自分自身の関数を参照できる。

var fib = (function() {
	var memo = {1: 1, 2: 1};
	return function(n) {
		return (memo[n] || (memo[n] = arguments.callee(n - 2) + arguments.callee(n - 1)));
	};
})();

range

yieldを使うとジェネレーターを作れる。

function range(start, stop) {
	for (let i = start; i < stop; ++i) {
		yield i;
	}
}
for each (let i in range(0, 10)) {
	alert(i);
}