Script

【GAS】やたらと使っているconstってなんですか?

constは変数の宣言

constは変数の宣言をするための修飾子です。

「const + 変数名 = ‘constですっ!’」と書くことで「constですっ!」という文字列が代入された変数を宣言できます。

たとえば、下のように書くと’constですっ!’という文字列が代入されたconstdesu変数を宣言できます。

const aboutConst = () => {
  const constdesu = 'constですっ!'
}


Google Apps Scriptでは変数を宣言するときに修飾子をつけなくてはなりません。どのような修飾子をつけるかによって変数の性質が決まります。

修飾子と変数の性質

修飾子性質
const再代入ができない
let再代入ができる
var再代入ができる

再代入ができる、できないとはなにか?

再代入とは変数を宣言後、さらに代入することです。

再代入の例

const aboutConst = () => {
  const constdesu = 'constですっ!'
  constdesu = '再代入ですっ!'
  console.log(constdesu)
}

constは再代入不可なので結果はエラーになります。


letやvarだとエラーになりません。下のコードは問題なく実行されます。

const aboutLet = () => {
  let letdesu = 'letですっ!'
  letdesu = '再代入ですっ!'
  console.log(letdesu)
}
const aboutVar = () => {
  var vardesu = 'varですっ!'
  vardesu = '再代入ですっ!'
  console.log(vardesu)
}


つまり、constで変数を宣言すると、うっかり再代入されて書き換えられる心配をしなくていいってわけですね。

オブジェクトや配列への要素の追加、削除、入れ替え

constは再代入できませんが、constで宣言したオブジェクトや配列等に値を追加、削除、入れ替えするのは可能です。オブジェクトや配列等の要素の追加、削除、入れ替えは再代入ではないんです。

配列への要素の追加

配列への要素の追加

const aboutConst = () => {
  const array = [1, 2, 3, 4, 5]
  array.push(6)
  console.log(array)
}

追加した結果

配列から要素の削除

配列から要素の削除

const aboutConst = () => {
  const array = [1, 2, 3, 4, 5]
  array.pop()
  console.log(array)
}

削除した結果

配列の要素の入れ替え

配列の要素の入れ替え

const aboutConst = () => {
  const array = [1, 2, 3, 4, 5]
  array[0] = 6
  console.log(array)
}

入れ替えた結果

オブジェクトへの要素の追加

配列と同じくconstで宣言したオブジェクトにも追加、削除、入れ替えは可能です。

const aboutConst = () => {
  const object = { constdesu: 'constですっ!', letdesu: 'letですっ!', vardesu: 'varですっ!' }
  object['miyasakodesu'] = 'miyasakoですっ!'
  console.log(object)
}

追加した結果


オブジェクトの要素の削除、入れ替えも同じく可能です。ここでは省きます。

constを使う意味ってなんなん?

constの魅力はズバリ、

変数に再代入されない、つまり変数の値が変わらないのでうっかり再代入されたり、したりするリスクがないのが最大の魅力です。

やたらとコードが長くなったり、複数人でコードをさわっているときに予期せぬ値が変数に再代入されると不具合がおきます。なので、はじめから再代入されないようになっている方が安心感があるんですね。

また、constを使うと明示的に「この変数の値は変えちゃだめよ」と宣言する意味にもなります。

逆にletやvarで宣言すると、「変えてもいいんだぜ」という意味になるため使用は慎重にしたほうがいいですね。


というか数千行コードを書いてもletを使うことはほとんどないですし、あるとしたらどうしてもカウンタ変数が必要なときにしぶしぶ使うくらいです。

オブジェクトや配列等のあつかい

変数の値を変えちゃだめとは言いつつも、オブジェクトや配列等だと属性や値を変更できちゃいます。

どうしても変えたくないストリクトな人はどうしたらいいかというと、元の変数の値は変えずに新しい変数を宣言してコピーしてあげるといいです。

下のコードは新たにarray2変数を宣言してarray1変数をコピーしつつ、6を要素として追加する例です。

const aboutConst = () => {
  const array1 = [ 1, 2, 3, 4, 5 ]
  const array2 = [ ...array1, 6]
  console.log(array2)
}


こうしてあげれば安心です。こういう書き方をスプレッド構文なんていいます。


他にもconstの特徴はありますが、再代入不可とざっくりおぼえておけば大丈夫です。

ともあれ、変数を宣言するときはconst一択です。

難しいことは考えずにconstと書いておきましょう。


あべし

Copied title and URL