Ho scritto molto codice ES6 per io.js di recente. Non c'è molto codice in natura da cui imparare, quindi mi sento come se stessi definendo le mie convenzioni.
La mia domanda è su quando utilizzare const
vs let
.
Ho applicato questa regola: se possibile, utilizzare const
. Utilizzare solo let
se si conosce che il suo valore deve cambiare. (Puoi sempre tornare indietro e cambiare a const
in a let
se in seguito si scopre che è necessario modificarne il valore.)
Il motivo principale di questa regola è che è facile da applicare in modo coerente. Non ci sono aree grigie.
Il fatto è, quando applico questa regola, in pratica il 95% delle mie dichiarazioni lo sono const
. E questo mi sembra strano. Sto solo usando let
cose come i
in un for
ciclo, o occasionalmente per cose come i totali di Fibonacci accumulati (che non si presentano molto nella vita reale). Sono rimasto sorpreso da questo: risulta che il 95% delle "variabili" nel mio codice ES5 fino ad oggi erano per valori che non variano. Ma vedere in const
tutto il mio codice mi sembra sbagliato in qualche modo.
Quindi la mia domanda è: va bene usare const
così tanto? Dovrei davvero fare cose del genere const foo = function () {...};
?
O dovrei riservarmi const
per quel tipo di situazioni in cui stai codificando un letterale nella parte superiore di un modulo - il tipo che fai in maiuscolo, come const MARGIN_WIDTH = 410;
?
function foo() {...}
è meglio di<anything> foo = function() {...}
function foo() {...}
può causare una leggera confusione durante il debug, a causa del sollevamento. Inoltre, la sua esistenza significa che abbiamo due costrutti che fanno la stessa cosa, ma uno di essi funziona solo in un contesto molto specifico. (È possibile utilizzare un'espressione di funzione ovunque esista un'espressione, ma è possibile utilizzare solo una dichiarazione di funzione a livello di istruzione.) Se si preferisce la brevità, il problema potrebbe essere che la sintassi dell'espressione di funzione utilizza l'intera parola function
.
const
così tanto.