Schemeのletのようなこと

withとオブジェクトリテラルを使うと,Schemeのletのようなことができると知った.

var hoge = 1;
with ({hoge: 2}) {
	print(hoge); // 2
}
print(hoge); // 1

これは便利そう.でも2種類の括弧が入り交じっててちょっと複雑だなぁ.JavaScript1.7にはletがあるらしい.


ちなみに,with内での参照順は「ローカル変数→withのオブジェクト→外」の順.
宣言していない変数への代入は,withのオブジェクトのプロパティへの代入と解釈される.