My days of...

生活のことなど

JavaScriptのconstについて。変更不可だけど変えられる場合があってウンヌンカンヌン・・・


今時のJavaScriptのconstについてMDNの内容を確認。

developer.mozilla.org

> const My_FAV = 7; 
undefined
> My_FAV = 20; //エラーになる
TypeError: Assignment to constant variable.


> console.log("私の好きな数字です:" + My_FAV); //7が出力される
私の好きな数字です:7

> const My_FAV = 30 //エラーになる
SyntaxError: Identifier 'My_FAV' has already been declared

// ブロックスコープ
// スコープ内はOK
> if (My_FAV === 7){
... const My_FAV = 20;
... console.log("私の好きな数字は:" + My_FAV);
... }
私の好きな数字は:20
// varを使うとグローバルになるからダメ
> if (My_FAV === 7){
... const My_FAV = 20;
... console.log("私の好きな数字は:" + My_FAV);
... var My_FAV = 20;
... }
var My_FAV = 20;
^

SyntaxError: Identifier 'My_FAV' has already been declared

// グローバルだと7のまま

> console.log("私の好きな数字は " + My_FAV + " です。");
私の好きな数字は 7 です。

// オブジェクトについて
> const MY_OBJ = {"key": "value"};

// 上書きはエラー
> MY_OBJ = {"OTHER_KEY": "value"};
TypeError: Assignment to constant variable.

// キーは保護対象外なので変更可能
> MY_OBJ.key = "otherVALUE";
'otherVALUE'
> MY_OBJ
{ key: 'otherVALUE' }


// キーも同様かな
> MY_OBJ.key2 = "value2";
'value2'
> MY_OBJ
{ key: 'otherVALUE', key2: 'value2' }

// 配列も同様
> const MY_ARRAY = [];
// pushすれば値が入る
> MY_ARRAY.push("AAA");
> MY_ARRAY
[ 'AAA' ]
> MY_ARRAY = ["B"];
TypeError: Assignment to constant variable.
// キーを指定すれば変更可能
> MY_ARRAY[0] = "C";
'C'
> MY_ARRAY
[ 'C' ]

詳しくはconst - JavaScript | MDNを見て確認しよう。