Ci sono alcuni vantaggi molto importanti per l'uso di const e alcuni direbbero che dovrebbe essere usato ovunque possibile a causa di quanto sia intenzionale e indicativo.
È, per quanto posso dire, la dichiarazione più indicativa e prevedibile delle variabili in Javascript, e una delle più utili, PERCHÉ di quanto sia limitato. Perché? Perché elimina alcune possibilità disponibili per var e lascia le dichiarazioni.
Cosa puoi dedurre quando leggi un 'const'? Conoscete tutto ciò che segue solo leggendo la dichiarazione di const, AND senza ricercare altri riferimenti a quella variabile: il valore è legato a quella variabile (sebbene il suo oggetto sottostante non sia profondamente immutabile); non è possibile accedervi al di fuori del suo blocco immediatamente contenente; e il binding non è mai accessibile prima della dichiarazione, a causa delle regole della Zona Morta Temporale (TDZ).
Da un articolo sostenendo i benefici del let e const, e anche risponde più direttamente le tue domande su della parola chiave vincoli/limiti:
"Vincoli, come quelli offerti da lasciare e const sono un potente mezzo per fare codice più facile da capire: cerca di accumulare quanti più limiti possibili nel codice che scrivi. Più vincoli dichiarativi che limitano ciò che un pezzo di codice potrebbe significare, più facile e veloce è per gli esseri umani leggere, analizzare e capire
Concesso, ci sono più regole per una dichiarazione const rispetto a una dichiarazione var: a scope, TDZ, assign at declaration, no re assegnazione. Mentre le istruzioni var segnalano solo lo scope delle funzioni. Il conteggio delle regole, tuttavia, non offre molte informazioni. È meglio valutare queste regole in termini di complessità: la regola aggiunge o sottrae complessità? Nel caso di const, scope scope significa un ambito più ristretto rispetto all'ambito della funzione, TDZ significa che non è necessario analizzare l'ambito indietro dalla dichiarazione per individuare l'utilizzo prima della dichiarazione e le regole di assegnazione significano che il binding conserverà sempre lo stesso riferimento.
Più dichiarazioni vincolate, più semplice diventa una parte di codice. Quando aggiungiamo dei vincoli a ciò che potrebbe significare una dichiarazione, il codice diventa meno imprevedibile. Questo è uno dei principali motivi per cui i programmi con tipizzazione statica sono generalmente più facili da leggere rispetto a quelli tipizzati dinamicamente. La tipizzazione statica pone un grosso limite allo scrittore del programma, ma pone anche un grosso limite su come interpretare il programma, rendendo più comprensibile il suo codice.
Con questi argomenti in mente, si consiglia di utilizzare const, se possibile, in quanto è l'affermazione che ci dà meno possibilità di pensare "
Fonte:. https://ponyfoo.com/articles/var-let-const
Lei sembra di chiedere multipla domande: 1) * "Mi interessa se ci sono dei limiti su quali tipi di valori possono essere impostati usando const in JavaScript" * No. 2) * "È valido?" * Sì. 3) * "è considerato negativo pratica per qualsiasi motivo "* Suppongo che non sia stato in giro abbastanza a lungo da poter dire qualcosa a riguardo, ma non vedo perché questa dovrebbe essere la pratica del pad. Non è molto diversa da' var doSomething =; ' 4) * "Tutte le funzioni devono essere definite in questo modo in ES6 ? "* Sembra ingombrante per me. Mi piacciono le dichiarazioni di funzione. Ognuno di loro. –
Il modo in cui lo vedo (opinione, non un fatto), ha senso se si desidera disabilitare la ridefinizione delle funzioni. Che sia sano di mente o che abbia qualche utilità funzionale, è discutibile. Se pensi che si adatti al tuo scenario d'uso, non penso * che qualcuno possa discutere la tua decisione e ritenerla una cattiva pratica. – Mjh
Immagino che la domanda sia ciò che vuoi ottenere con 'const'. Vuoi impedire a te stesso di scavalcare la funzione? Immagino che tu sappia che il tuo codice non lo fa comunque. Vuoi esprimere l'intento di 'doSomething', cioè che detiene una funzione e non modifica il suo valore? Penso che le dichiarazioni di funzione comunichino chiaramente anche questo intento. Quindi, se hai bisogno di "protezione di runtime" da ignorare, provaci. Altrimenti non vedo molti benefici. Naturalmente se si usasse principalmente 'var foo = function() {};', userei 'const' invece di' var'. –