Io.jsとして ES6をサポート 最終的に、const
およびlet
キーワードを使用できるようになりました。明らかに、let
はvar
の後継であり、いくつかの超大国を持っています。
しかし、const
はどうですか?もちろん、「定数」が何を意味するかは知っていますが、(ベストプラクティスに関して)いつ使用するのか疑問に思っていました。
たとえば、別のモジュールを必要とするモジュールを作成する場合、次のように書くことができます。
'use strict';
const util = require('util');
const foo = function () {
// Do something with util
};
module.exports = foo;
基本的に、すべてのvar
をconst
に置き換えました。一般的に言えば、これは大丈夫だと思いますが、このパターンに従うと、ほとんどの変数は文字通りの意味で「変数」ではないため、const
よりもlet
の使用方法が多くなります。 。
これはいいスタイルですか? let
を選ぶべきですか? const
よりもlet
を選択する場合
const
は通常、プログラムが必要ない場合に使用できます。
変数に何かを割り当てる
"use strict";
const a = 1;
a = 2;
TypeError: Assignment to constant variable.
を生成します。
明示的に初期化せずに変数を使用します。
"use strict";
const a;
SyntaxError: Unexpected token ;
を生成します
簡単に言えば、私は言うでしょう、
いくつかの変数を変更しない場合は、const
を使用します
let
の正反対が必要な場合はconst
を使用します
eS5実装との互換性が必要な場合、またはモジュール/関数レベルのスコープが必要な場合は、var
を使用します。
let
は、ブロックレベルのスコープが必要な場合にのみ使用してください。そうでない場合は、let
またはvar
を使用しても違いはありません。
私はあなたが説明しているのと同じ感覚を持っています。私のコードで宣言された変数の大部分は、オブジェクトや配列でさえ一定である傾向があります。定数オブジェクトと配列を宣言しても、それらを変更できます。
const arr = [];
arr.Push(1);
arr;
// [ 1 ]
const obj = {};
obj.a = 1;
obj;
// { a: 1 }
AFAIK ES6モジュール インポート時に変数宣言を必要とせず、 io.jsは近い将来ES6モジュールに移行します と思われます。
これは個人的な選択だと思います。モジュールを必要とする場合、およびモジュールのローカル変数(例ではfoo
)には常にconstを使用します。残りの変数については、constを適切に使用しますが、気を散らしてどこでもconstを使用しないでください。 letとconstの間のパフォーマンスがわからないため、可能な限りconstを使用する方が良いかどうかわかりません。
Node.js 6.10のconst
でのパフォーマンステストlet
vs require
の使用法:
require('do-you-even-bench')([
{ name: 'test 1', fn: function() {
const path = require('path');
}
},
{ name: 'test 2', fn: function() {
let path = require('path');
}
}
]);
テスト1 .... 2,547,746.72 op/s
テスト2 .... 2,570,044.33 op/s