代入文がなくなってJavaScriptは書けるもん。
(function(foo){
foo();
})(function(){
(function(x){
(function(bar){
bar();
print(x + x);
})(function(){
(function(x){
print(x + x);
})(1);
});
})(10);
});
ふざけた外観をしてるけれど、このコードは静的スコープによって説明できる。
元ねたは@eseharaの変数のスコープを意識することについて、Lisp周辺とClojureのletを利用して考える - Line 1: Error: Invalid Blog('by Esehara' )。素晴らしい記事なので、みなさん読むべき。
練習問題
代入文を使った式を=
なしの形式に変換してみよう。
あとがき
このコードを理解できれば、一部のプログラミング言語に存在するlet式1をマスターできたと友達に自慢できるぞ。(ES2015の仕様書をちゃんと読んでないんだけど、おそらくJavaScriptのlet
とは他人の空似)
脚注
-
Lisp, ML, Haskellなどに存在します ↩