web-dev-qa-db-ja.com

JavaScriptで定数変数を使用できますか?

JavaScriptでconstant変数を作成できるサイトを1つ読みました。

const x = 20;

しかし、私はあなたができないことを別のサイトで読みました。だから私は今それが今何であるか混乱していますか?

また、Visual Studio 2010では、constと記述すると、JavaScriptファイルで下線が引かれ、構文エラーが表示されます。

36
chobo2

constはECMAScript Harmonyの提案された機能です (適切にブロックスコープされたletとともに、varおよび暗黙的なグローバルを置き換えることになっています)。 ECMAScript Harmonyは、ECMAScriptの次のバージョンのアイデアを集めたものです。

constもECMAScript 4の一部でした。

ECMAScript 4は決してリリースされず、今後もリリースされず、ECMAScript Harmonyは数年後にリリースされます。したがって、確実に使用することはできません。

constを実装するECMAScriptの実装または派生物がいくつかあります(たとえば、ActionScript)。 constの同義語としてvarを受け入れる実装もいくつかあります(IOW、constを使用できますが、保護は提供されません)。

ただし、ECMAScriptの非常に具体的な派生物の非常に具体的な実装の非常に具体的なバージョンでのみコードが実行されることを絶対に保証できない限り、おそらく回避する方が良いでしょう。 (これは、const、特にlethugevarおよび暗黙的なグローバルよりも改善されているため、本当に残念です。)

40
Jörg W Mittag

読み取り専用変数を探している場合は、次のようなものでそれをシミュレートします

var constants = new (function() {
    var x = 20;
    this.getX = function() { return x; };
})();

そして、それを次のように使用します

constants.getX()
25
lincolnk

解決策は、オブジェクトを作成し、すべての定数をオブジェクトに入れることです。

const={};

const.x=20;

const.y=30;

Object.freeze(const);  // finally freeze the object

使用法:

var z=const.x + const.y;

変数を変更しようとすると、エラーが生成されます。

const.x=100;  <== raises error
5
user2373071

JavaScript ES6は constキーワード を(再)導入しました。これは すべての主要なブラウザー でサポートされています。

constを介して宣言された変数は、再宣言または再割り当てできません。

それ以外は、constlet と同様に動作します。

プリミティブデータ型(ブール、ヌル、未定義、数値、文字列、シンボル)に対して期待どおりに動作します。

const x = 1;
x = 2;
console.log(x); // 1 ...as expected, re-assigning fails

注意:オブジェクトに関する落とし穴に注意してください:

const o = {x: 1};
o = {x: 2};
console.log(o); // {x: 1} ...as expected, re-assigning fails

o.x = 2;
console.log(o); // {x: 2} !!! const does not make objects immutable!

const a = [];
a = [1];
console.log(a); // 1 ...as expected, re-assigning fails

a.Push(1);
console.log(a); // [1] !!! const does not make objects immutable
3
le_m

ECMAScriptにはconstはありません(4.0の古いバージョンとActionScriptを無視します)。

constJScript.NET および一部の JSエンジンの最新バージョン で利用可能です。 Firefox、Opera 9、ベンダー固有の拡張機能としてのSafari。

3
kennytm

私はvarにはない何か、グローバル変数であると信じています... jsにはconstがありません。

var a="test"a="test"とは異なります

2
Samit

いいえ、JavaScriptにはデータ型「const」はありません。

JavaScriptは緩やかに型付けされた言語です。すべての種類の変数はvarで宣言されます

1
Rajat

このドキュメントをチェックしてください。javascriptでconstを使用する方法の概要を説明しています。

http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml

0
rekordboy