[解決済み】JavaScriptのConst:いつ使うのか、必要なのか?
質問
最近
const
というJavaScriptのキーワードがあります。私の知る限りでは、このキーワードは
不変の変数
そして、(Node.jsで)再定義できないことを確認するためにテストしています。
const x = 'const';
const x = 'not-const';
// Will give an error: 'constant 'x' has already been defined'
まだすべてのブラウザで標準化されているわけではないことは承知していますが、私が関心を持つのは
Node.js V8
そして、ある特定の
開発者/プロジェクト
を使用する場合、それを強く支持するようです。
var
キーワードを使っても同じ効果が得られるかもしれません。
-
を使用することが適切なのはどのような場合ですか?
const
の代わりにvar
? - を使用する必要があります。 再割り当てが宣言されているか?
-
というのは、実際に何か違いがあるのでしょうか?
var
の代わりにconst
またはその逆は?
解決方法は?
ご質問には2つの側面があります。
const
の代わりに
var
とか、そうすることで人間的にどうなるのかとか。
技術的な違いは大きいです。コンパイルされた言語では、定数はコンパイル時に置き換えられ、その使用によってデッドコードの除去など他の最適化が行われ、コードの実行時効率をさらに高めることができるようになるのです。最近の(大雑把な言い方ですが)JavaScriptエンジンは、実際にJSコードをコンパイルして性能を高めているので、constキーワードを使うと、上記の最適化が可能であり、それを行うべきであると通知することになります。その結果、パフォーマンスが向上するのです。
人間に関係する面では、キーワードのセマンティクスについてです。変数とは、変化することが予想される情報を含むデータ構造である。定数は、決して変化しない情報を含むデータ構造である。エラーの余地がある場合
var
を常に使用する必要があります。しかし、プログラムの寿命が尽きるまで決して変化しない情報のすべてを
const
. 異なる状況下で情報を変更する必要がある場合は
var
を使えば、たとえその変更がコードに現れなかったとしても、そのことを示すことができます。
関連
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする