GASでconstの挙動がおかしいので使わない方がよさそう
GASだとconstのスコープが違う?
最近のJavascriptとかTypeScript界隈では、var
、let
、const
が変数の宣言として使えて、scalaとかswift脳からするとなるべく再代入は避けたいのでconst
を使いたい。
例えばfor文内で一時的な変数を宣言して利用しようとした場合こんなコードがあったとして、
function test() { for (var i = 0; i < 5; i++) { const k = i * 2; var m = i * 2; Logger.log('k = ' + k + ', m = ' + m); } }
kもmもiが2倍された値が表示されるはずなんだけど、constで宣言した方は0のままになってしまう。一度代入されたらそれ以降変更されないようだ。グローバルスコープっぽい動き。
なので、GASでconstを使う場合は、本当に一度でも代入したら変更しない定数にのみ使う方がよい。というかあんまり使わない方がいいかも。
node.jsでやってみるとちゃんとconstに再代入されてる
これが想定していた挙動