Esiste un piano per eliminare le "funzionalità" dalle prossime versioni di javascript? [chiuso]

0

Sto cercando di imparare javascript (ora per davvero) e ho dato un'occhiata al ultimo versione di ES6 che dovrebbe essere congelata in termini di funzionalità impostate. Sembra essere praticamente lo stesso di ES5 e nuove cose (funzionalità). La mia lamentela principale è che ci sono così tanti modi per realizzare la stessa cosa, quindi mi chiedo se ci sia qualche piano per eliminare alcune delle vecchie "caratteristiche" o se continua a costruire sulle vecchie specifiche (cioè fino a quando non diventa un gran casino).

    
posta The user with no hat 09.03.2015 - 12:33
fonte

2 risposte

2

Non sono d'accordo, l'obiettivo principale di ES6 non è quello di introdurre nuovi modi per "realizzare la stessa cosa", ma in realtà coprire alcune aree che non erano affatto coperte.

I generatori sono estremamente utili per la classe di attività in cui è necessario scorrere un grande elenco di elementi, ma non è necessario conservare tutti questi elementi in memoria contemporaneamente. Questo è qualcosa che è stato molto difficile da emulare.

Oppure diamo uno sguardo a Set e Maps - prima d'ora ti eri limitato dal fatto che non era possibile avere chiavi nell'hash diverse dalle stringhe.

Vararg, argomenti opzionali, funzioni di freccia, interpolazione delle stringhe, assegnazione destrutturante - tutti questi, sì, in realtà possono essere trattati come una sintassi dello zucchero ma dalla mia esperienza difficilmente posso trattare gli attuali approcci competitivi con quelli nuovi, i nuovi sono migliori e molto probabilmente sarà sempre usato al suo posto.

Quindi, dicendo tutto questo posso effettivamente pensare a caratteristiche che possono essere escluse "in cambio". Anche se la massima compatibilità non sarà trattata come aspetto cruciale (lo fa), non c'è molto da buttare via.

A partire da piccole incertezze, in realtà vengono risolti introducendo nuove mini API più rigorose: controlla, ad esempio, Number.isNaN . Di tanto in tanto le API precedenti sono deprecate e persino escluse, ma questo non è un processo veloce e in realtà non dovrebbe esserlo.

    
risposta data 09.03.2015 - 12:48
fonte
1

ECMAScript è il singolo linguaggio con la maggior compatibilità possibile che sia mai esistito.

In generale, gli sviluppatori non possono scegliere la versione dell'implementazione (o anche l'implementazione) che verrà utilizzata per eseguire il codice, perché è installata sul computer dell'utente. Gli utenti non possono scegliere la versione dell'app che eseguono, perché il codice viene consegnato dal sito Web remoto. Gli utenti spesso non possono nemmeno scegliere quale versione di quale implementazione sono in esecuzione, perché l'implementazione è legata al browser e il browser è dettato dal sistema operativo, dalla politica del reparto IT o dai vincoli di compatibilità con altro em> siti web non collegati.

I siti web sono (dovrebbero essere) eterni. Potrebbe esserci un sito Web ECMAScript che non è stato mantenuto per 10 anni, ma è comunque necessario poterlo visitare tra 10 anni, con un browser con motore ECMAScript 10 incorporato.

Fornendo quei vincoli di estremo retrocompatibilità, è quasi impossibile rimuovere una caratteristica una volta che è lì. var è una di queste funzionalità che probabilmente dovrebbe essere rimossa, ma probabilmente non lo sarà mai.

Tuttavia, esiste una funzione di transizione: ECMAScript 5 e 6 hanno una cosiddetta modalità rigorosa che viene attivata da una dichiarazione "use strict" . La modalità rigorosa non è solo un sottoinsieme della modalità normale, potrebbe effettivamente avere una semantica diversa. E le versioni future di ECMAScript sono generalmente basate sulla modalità rigorosa della versione precedente. Per esempio. ECMAScript 6 è basato sulla modalità rigorosa ECMAScript 5. Le nuove funzionalità della lingua attivano automaticamente la modalità rigorosa, ad es. le dichiarazioni di modulo e di classe in ECMAScript 6 verranno sempre valutate in modalità rigorosa, indipendentemente dal fatto che esista una dichiarazione "use strict" .

    
risposta data 09.03.2015 - 20:23
fonte

Leggi altre domande sui tag