久しぶりにjavascriptで遊んでみた

spidermonkeyのversionが1.8だったので、javascriptの1.8(1.7)の機能で遊んでみる

//多重代入
var [leta, a] = [[],[]];

//let
//これで状態を持った変数をつくることができる。
for(var i=0; i<3; i++){
	let(i=i){ leta[i]=function(){print(i)} };
	//(function(i){leta[i]=function(){print(i)}})(i); と同じ感じ。
	a[i] = function(){print(i)};
}

//returnを省略できるsyntax-sugar
function complain(name) function(){print("==", name, "==")} ;

leta.unshift(complain("leta"));
a.unshift(complain("a"))

a.forEach(function(e){e()});
//Array.forEach(a, function(e){e()}) というようにthisを指定して呼び出すこともできる
//1.7とかの機能じゃないけど><
leta.forEach(function(e){e()});
// == a ==
// 3
// 3
// 3
// == leta ==
// 0
// 1
// 2


//あと、配列の生成も楽にできる
function range(from, to){
	for(var i=from; i<to; i++){ yield i}
}
print([i for(i in range(1,10))])
print([i*i for(i in range(1,10))])
print([i*i*i for(i in range(1,10)) if(i%2 == 1)])

// 1,2,3,4,5,6,7,8,9
// 1,4,9,16,25,36,49,64,81
// 1,27,125,343,729