実現したいこと
定数constを宣言している理由を知りたいです。
前提
教本でJavaScriptの勉強をしています。
cookieの承認ボタンがクリックされたかどうか確かめるコードです。
1行目でconst agreeを宣言するのですが、この定数agreeにはcookie承認ボタンがクリックされたら'yes'を代入するので、定数より変数letで宣言するべきではないのでしょうか?
なぜconstを使っているのか教えていただきたいです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
JavaScript
1const agree = Cookies.get('cookies-agree'); 2if(agree === 'yes') { 3 console.log('クッキーを確認しました'); 4} else { 5 console.log('クッキーを確認できません'); 6 document.getElementById('agreebtn').onclick = function() { 7 Cookies.set('cookies-agree', 'yes', {expires: 7}); 8 }; 9}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
コードが一部なのでなんとも言えませんが、提示されたコードだけだと再代入がないのでconst妥当です
7行目で値は書き換えるのですが、ページが読み込まれたときに1回だけ処理するので値の再代入には当たらないということですかね?
例えばこのコードをwhileの中に書いていたらダメですよね?
>7行目で値は書き換えるのですが
クッキーのcookies-agreeというキーの値をセットしてるだけで「書き換え」ではないですし、
const無関係です。
> 例えばこのコードをwhileの中に書いていたらダメですよね?
何を求めたいかによりますが、実際にサンプルコード書いてみてはどうでしょう。
> この定数agreeにはcookie承認ボタンがクリックされたら'yes'を代入するので
何故そう思ったのか不思議でなりません。
agreeに'yes'を代入するというコートは、agree = 'yes'; ですよ。
1行目の代入についてですが、agree='yes'のように直接的ではないですがCookies.getで'yes'を取得してそれを間接的に代入していると思うのですが間違った解釈ですかね?
1行目は代入ですよ。そこは間違っていません。
更新はこの1回きりなので、constを付けてるわけですが、、、、
あ、わかった。もしかして、
const は、const x = 123; とか const y = "abc"; のように右辺がリテラルの代入の時につけるもの限定で、
const z = 関数呼び出しのような計算式;
みたいな使い方がおかしいと思っていたと言うことですか?
関数の実行によって'yes'または別の値がagreeに代入されるのになぜconstなのかと疑問に思ってました。
でも皆さんのおかけで、定数を宣言しているから初期化されているという意味が理解できました。
ありがとうございました!
そうですね。物理学で言う物理定数の定数とは意味が異なります。数学の定数はもしかすると分野によって異なるかも知れませんが、中学高校数学の定数は、多くのプログラミング言語のconstとは異なります。
123とか"abc"のようなものはリテラルと言います。
言語によっては、定数定義の右辺に関数呼び出し結果どころか、 123*4+5 のような定数だけでコンパイル時に値が決まる式さえ書けなかったりしますので、そういった言語からプログラミングに入門すると違和感あるでしょうね。昔からある言語は式が書けない気がします。
最初の私のコメント含め、皆さん、再代入の絡みの話かと思って回答していますね。
回答3件
あなたの回答
tips
プレビュー