let式とlet宣言の微妙な差異
ちょっとだけハマったのでメモ。let式内で複数の変数を定義するとき,同時に定義した他の変数は参照出来ない,というお話。
varの場合,同時に定義した変数xの値を参照することができる。
var x = "a", y = x + "b"; alert(y); // => "ab"
let"宣言"の場合もvarと同様に,yの定義部からxの値を参照できる。
let x = "a", y = x + "b"; alert(y); // => "ab"
ところが,let"式" (またはlet"文") の場合はこれができない
let (x = "a", y = x + "b") alert(y); // => x is not defined
let式で意図した通りの挙動を実現するためには,let式を入れ子にするしか無いようだ。
let (x = "a") let (y = x + "b") alert(y);
当然Lispのlet*のようなものは用意されていない。ちょっと面倒だなー。