定数の初期化の話
2020-09-29T15:00
この辺こんな風に(キーワードは違うにせよ)書ける言語もあるんだけど、JS はダメなのよね。
const x;
if (cond) {
// 一回だけ代入可
x = hoge;
} else {
x = fuga;
}
// x が初期化されていないパスがある状態でここで x を使うとエラー
たしかに。
上記しかなかったら、こういう風に書くよね:
const x = cond ? hoge : fuga;
Scheme だとこういう風に書ける:
(define-constant x (if *cond*
hoge
fuga))
あんまり変わらないけど…。
えーと
よく見ると、定数の初期化の話ではない…?
つまり、const
は変数への 1
回だけの代入を許すみたいなものがある言語もあるけれども、JavaScript
では最初に代入しないと Syntax Error になってしまう。 みたいなことか。
こういうエラーが出た:
$ deno run ./demo000.js
error: Uncaught SyntaxError: Missing initializer in const declaration
const x;
^
at