2017-02-16 16 views
5

私はTypeScript Deep Diveを読んでいましたが、letconstの両方がブロックスコープであることがわかりました。明らかに、constは変更できません(不変です)。しかしReSharperが私にできるだけ多くのletconstに変更するよう勧めているのはなぜですか?私はReSharperがconstを使用してパフォーマンスを向上させると考えていると仮定していますletを超えていますか? constletの間に速度差はありますか? constを使用する別の理由はありますか?以下の例を見てみましょう:TypeScript(またはJavascript)のconst vsのメリット

for (let i = 0; i < this.InputControl.ParentQuestions.length; i++) { 
    const id = this.InputControl.ParentQuestions[i].ParentId; 
    const value = this.InputControl.ParentQuestions[i].ParentRequiredAnswer; 
    if (!formVals[id]) return false; 
    if (formVals[id].toLowerCase() != value.toLowerCase()) return false; 
} 

は以前、私がlet idlet valueがあったが、ReSharperのはconstにそれらを変更するために私に尋ねた、働くが、なぜそれがこのケースで良いですか?またはいずれにしても?

私はまた、this question on SOを見つけましたが、letconstが何をしているかについて詳しく説明しています。可能な限りconstを使用すると言われていますが、その利点は何ですか?

+1

この点でIMOはTSとJSの違いはないので、JSタグも追加します。 –

答えて

8

パフォーマンスが主な理由ではないと私はGiorgiに同意します。コードアナライザは、letで宣言された変数は、constと宣言した場合と同じように再割り当てされず、最適化されていないと判断することもできます。 (ちょっと、これを検出するためのルールがあり、letの代わりにconstを使用することをお勧めします)。

はい、変数に割り当てないことを読者に伝えます。 constの利点は、同じことを言っている以上に、主にconstがそれを通知する標準的な方法だということです。標準であるため、カスタムコメントよりも容易に情報を送信します。 (また、コメントが間違っている可能性がありますが、constはあなたを間違えさせません)。私はこれが主な利点だとは思わない。

「最小特権の原則」は、多くの場合、constと組み合わせて呼び出されますが、最低限の特権についてはどうしたらよいですか? はコーディングミスの早期発見に役立ちます。私はfound = childを入力することを意図したときに、私はtree = childを入力した、このコードでは

function findSomethingInDocument(document) { 
    let tree = getTreeFromDocument(document); // We get some sort of tree structure. 
    let found; 
    for (const child of tree.children) { 
     if (child.someFlag) { 
      tree = child; // Oops I meant found = child :(
      break; 
     } 
    } 
    return found; 
} 

:次のコードを考えてみましょう。はい、バグとなります。しかし、なぜテストを待つのですか?私は決してtreeを変更することを意味しませんでした。もし私がconstとマークしたのであれば、はすぐにエラーを学んだでしょう。私はテストを待つ必要はありません。上記のコードはかなりシンプルですが、より多くの変数を使用するより複雑なアルゴリズムを想像してください。

4

IMOこれはパフォーマンス上の理由とは関係ありませんが、ドキュメントに関連している可能性があります。

あなたはconstとして宣言することができ、あなたは、あなたが後で別の値にそれを再割り当てする予定がない読者に知らせるなどとしてそれを宣言する変数を持っています。

また、最小特権の原則のようなものに関連する可能性があります。変数をconstと宣言すると、後でその事故から自分自身を守ることができます。

関連する問題