簡體   English   中英

僅在使用了var語句的塊內使用它分配值,才有意義嗎?

[英]Does it make sense to assign a value to a variable declared with var statement only inside those blocks where it is used?

讓我們考慮一下

  • javascript函數中的var語句聲明了一些變量;
  • 在整個函數中,此變量的值將保持不變;
  • 該變量將僅在該函數的某些塊內使用,但不會在大多數塊內使用。

問題:如果上述所有內容都是正確的,那么最好在函數聲明的開始處,僅在塊外部為變量分配一次值(不會更改),或者僅在內部重復分配相同的值那幾個使用變量的塊?

在以下示例中,函數聲明內有5個塊,但變量x僅在其中2個內使用。 但是,讓我們假設有更多的塊,並且只有很少的塊涉及變量x。

示例1:在此示例中,變量x在所有塊之外的函數聲明開始處僅分配了一次值:

function foo() {
    var x;
    x = 'value';
    if (ConditionNotInvolvingX) {
        // do something without using x
    }
    else if (Condition2NotInvolvingX) {
        console.log(x);
    }
    else if (Condition3NotInvolvingX) {
        console.log('""' + x + '""');
    }
    else if (Condition4NotInvolvingX) {
        // do something without using x
    }
    else if (Condition5NotInvolvingX) {
        // do something without using x
    }
}

示例2:在此示例中,變量x的值僅在需要的兩個塊內重復分配:

function foo() {
    var x;
    if (ConditionNotInvolvingX) {
        // do something without using x
    }
    else if (Condition2NotInvolvingX) {
        x = 'value';
        console.log(x);
    }
    else if (Condition3NotInvolvingX) {
        x = 'value';
        console.log('""' + x + '""');
    }
    else if (Condition4NotInvolvingX) {
        // do something without using x
    }
    else if (Condition5NotInvolvingX) {
        // do something without using x
    }
}

當然,您可以在方便的地方分配它,以便所有需要訪問它的功能/塊都可以這樣做。

就是說:使用const而不是var通常更好const具有塊作用域(使您的代碼更易於理解),沒有提升(相同)並且不允許重新分配(相同)。

但是,如果願意,您可以努力編寫盡可能多的純函數 ,這意味着(除其他外)函數引用的唯一變量直接在該函數的塊中,而不在任何外部范圍內。 純粹的函數有時需要花費更多的心思才能完成,但是它們可以使對較大腳本的推理更加容易。 編寫代碼時是否要嘗試由您決定。

我希望代碼行越少越好,因此應該在頂部而不是在使用的每個位置分配一次。

另外,如果不想在100個塊中的99個中使用它,就不想在每個塊中分配它,那么您就會遇到一個問題,即從一種方法(頂部)切換到另一種方法(每個塊)的確切比例是多少? 。 如果僅將其始終分配在頂部,則可以避免該問題。

暫無
暫無

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

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