[解決済み] キーワード 'const' は値をイミュータブルにしない。どういう意味ですか?
質問
このページでは const 定義 で ES6 を探る アクセル・ラウシュマイヤー博士によるものです。
const
はletと同じように動作しますが、宣言した変数はすぐに はすぐに初期化されなければなりません。 で、後から変更できない値で その後 . [...]const bar = 123; bar = 456; // TypeError: `bar` is read-only
と書き、さらに
<ブロッククオート
const
は、変数が常に同じ値を持つことだけを意味します。
のようなものですが、値そのものが不変である、あるいは不変になるということではありません。
私はこの落とし穴に少し困惑しています。誰か明確に
const
を明確に定義できますか?
どのように解決するのですか?
MDN がうまくまとめてくれています。
<ブロッククオート
は
const
宣言は値への読み取り専用の参照を作成します。これは、保持する値が不変であることを意味するのではなく、単に変数の識別子が再割り当てできないことを意味します。例えば、コンテンツがオブジェクトの場合、これはオブジェクト自体がまだ変更可能であることを意味します。
もっと簡潔に言うと
const
はイミュータブルバインディングを作成します。
言い換えれば
const
のように
var
のように、何かを格納するための可変長のメモリチャンクを提供します。しかし、const では、メモリの同じチャンクを参照し続けなければなりません。変数の参照は一定なので、変数をメモリの別のチャンクに再割り当てすることはできません。
宣言した後に本当に定数で不変のものを作るには、次のようなものを使う必要があります。
Object.freeze()
. しかし、これは浅はかで、キーと値のペアにしか使えません。オブジェクト全体を凍結させるには、もう少し手間がかかります。それを繰り返し実行するのは、さらに難しいことです。もし本当にその必要があるのなら、次のようなものをチェックアウトすることをお勧めします。
Immutable.js
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。