withとオブジェクトリテラルを使うと,Schemeのletのようなことができると知った.
var hoge = 1;
with ({hoge: 2}) {
print(hoge);
}
print(hoge);
これは便利そう.でも2種類の括弧が入り交じっててちょっと複雑だなぁ.JavaScript1.7にはletがあるらしい.
ちなみに,with内での参照順は「ローカル変数→withのオブジェクト→外」の順.
宣言していない変数への代入は,withのオブジェクトのプロパティへの代入と解釈される.