最近、io.js用のES6コードをたくさん書いています。学ぶべきコードはそれほど多くないので、自分の慣習を定義しながら進めているように感じます。
私の質問はどのような場合に使用する程度であるconst
対let
。
私はこのルールを適用しています:可能であれば、を使用しますconst
。let
値を変更する必要があることがわかっている場合にのみ使用してください。(後で値を変更する必要があることが判明しconst
たlet
場合は、いつでも戻ってa に変更できます。)
この規則の主な理由は、一貫して簡単に適用できることです。灰色の領域はありません。
問題は、このルールを適用すると、実際には宣言の95%がになるということですconst
。そして、これは私には奇妙に見えます。私は使用していますlet
のようなもののためにi
ではfor
ループ、または時折(実際の生活の中で多くを起動しない)の累積フィボナッチ合計のようなもののために。これには驚きました。これまでのES5コードの「変数」の95%は、変化しない値に対するものでした。しかしconst
、コード全体を見ると、どうも間違っているように感じます。
だから私の質問は次のとおりconst
です。これだけ使用しても大丈夫ですか?私は本当に次のようなことをすべきconst foo = function () {...};
ですか?
またはconst
、モジュールの最上部にリテラルをハードコーディングしているような状況、つまりフルキャップで行うような状況のために予約する必要がありますconst MARGIN_WIDTH = 410;
か?
function foo() {...}
より良い<anything> foo = function() {...}
function foo() {...}
巻き上げのため、デバッグ時に軽度の混乱を引き起こす可能性がある警告があります。また、その存在は、同じことを行う2つの構造がありますが、そのうちの1つは非常に特定のコンテキストでのみ機能することを意味します。(式が存在できる場所であればどこでも関数式を使用できますが、ステートメントレベルでのみ関数宣言を使用できます。)簡潔にしたい場合、問題は単に関数式の構文が単語全体を使用することですfunction
。
const
これだけ使用しても構いません。