Va bene usare var di proposito in ES6, invece di lasciarlo?

0

Ero veramente felice che ES6 abbia introdotto la parola chiave let per la definizione delle variabili. Le regole di scoping var possono portare a tutti i tipi di problemi, specialmente quando si lavora con loop e gestori di eventi. Anche quando i programmatori hanno utilizzato var in passato, hanno comunque sempre previsto let delle regole di selezione.

Le variabili dichiarate con var sono disponibili nell'intera funzione. Le variabili definite con let sono disponibili solo all'interno del blocco in cui sono dichiarate.

Tuttavia, anche le regole di scoping di var sono utili a volte, anche se molto raramente. Ecco un esempio: (immagina tutti questi esempi sono all'interno di una funzione, non intendo definire i globali qui)

try {
    var result = mightThrowAnException();
    //do various things
}
finally {
    if (result) cleanup(result);
}
//do other things
callSomeFunction(result); //reference result

return result;

Nell'esempio precedente, la sostituzione di var con let causerebbe un errore. Per utilizzare let , si dovrebbe scrivere una funzione come questa:

let result; //declare the variable outside the braces
try {
    result = mightThrowAnException();
    //do various things
}
finally {
    if (result) cleanup(result);
}
//do other things
callSomeFunction(result); //reference result

return result;

Onestamente penso che scriverlo in questo modo non sia migliore. È peggio quando devi predefinire più variabili come queste, solo perché sono dichiarate in un blocco try .

In TypeScript, c'è il fastidio aggiuntivo che devi dichiarare esplicitamente il tipo di result se vuoi predefinirlo in questo modo. Se lo si inizializza, il tipo verrà dedotto automaticamente.

È una buona idea usare var invece di let per approfittare di queste regole di scoping, quando in quasi tutte le altre parti del tuo codice usi let ?

    
posta GregRos 08.02.2018 - 18:39
fonte

1 risposta

5

Solitamente in questo tipo di domande, rimando l'ESLint a una guida poiché spiegano molto chiaramente perché le regole sono come sono, dai un'occhiata a no-var regola.

Il motivo principale è la leggibilità. il comportamento a cui ti riferisci è difficile da leggere e tracciare e qui c'è un esempio .

Inoltre, il secondo snippet di codice è di gran lunga più semplice da tracciare e correggere e definire la variabile nell'ambito correct (primo esempio la var è usata al di fuori dell'ambito di definizione, che è fuorviante e può causare problemi come shadowing ) .

    
risposta data 08.02.2018 - 21:42
fonte

Leggi altre domande sui tag