簡體   English   中英

在TypeScript(或Javascript)中使用const vs let的好處

[英]Benefit of const vs let in TypeScript (or Javascript)

我正在閱讀TypeScript Deep Dive ,我發現letconst都是塊作用域,這很棒。 顯然,const不能改變(它是不可變的)。 但是為什么ReSharper鼓勵我改變盡可能多的let我變成const呢? 我假設ReSharper認為使用const over let會有性能提升嗎? constlet之間有速度差嗎? 使用const有不同的理由嗎? 請看以下示例:

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 ,這有效,但為什么在這種情況下更好呢? 或者無論如何?

我也在SO上發現了這個問題 ,但它更多地討論了letconst作用,而不是為什么一個比另一個好。 它確實說盡可能使用const ,但它提供了什么好處?

我同意Giorgi的說法,表現不是主要原因。 代碼分析器也可以確定用let聲明的變量不會被重新分配,並且就像使用const聲明它一樣優化它。 (哎呀,linters有規則來檢測這個並建議使用const而不是let 。)

是的,它確實向讀者發出了你不會分配給變量的信號。 const的好處,而不是發表評論說同樣的事情,主要是const是一種發信號的標准方式。 作為標准,它比定制注釋更容易傳輸信息。 (此外,評論可能是錯誤的,但const不會讓你錯。)我不認為這是主要的好處。

“最小特權原則”通常與const一起調用,但為什么我應該關心最小特權呢? 因為它有助於及早發現編碼錯誤 請考慮以下代碼:

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;
}

在這段代碼中,當我打算輸入found = child時,我輸入了tree = child found = child 是的, 可以在測試中找到錯誤。 但為什么要等待測試? 我從沒想過要改變tree 如果我將它標記為const那么我會立即學習錯誤,因為編譯器會告訴我它。 我不必等待測試。 上面的代碼相當簡單,但想象一下使用更多變量的更復雜的算法。

如果您有一個可以聲明為const的變量,並且您將其聲明為此類,則通知讀者您不打算稍后將其重新分配給其他值。

同樣通過聲明變量const這意味着您已經預先考慮過您不打算重新分配它,這反過來可以保護您免受意外錯誤或錯誤的影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM