- 249 名前:デフォルトの名無しさん mailto:sage [2013/07/25(木) NY:AN:NY.AN ]
- (function (x) {
y=2; print(x,y); function(x){x=10;y=20;print(x,y)}; print(x,y)})(1) [出力] 1 2 10 20 1 20 これ一体どう実装されているんだろう? クロージャの生成で変数テーブルの参照を共有するのだろうから yの変更が反映されるのは至極真っ当。 xの変更が反映されないのは、引数については変数捕捉されないように細工がされている? a.クロージャ生成時に見えていた変数テーブル b.クロージャ引数用の変数テーブル この2つを持っていて、変数評価時に走査している? さらにクロージャの中でクロージャ生成する場合は a,bを合わせて新たに1つのaにしているんだろうか。
|

|