JavaScript, ES6, ES7, ES10 onde estamos?
On Janeiro 26, 2022 by adminES6 e ES7 – lembrete
Não vou insultar-te, e escrever ainda-uma outra introdução ao ES6…Mas na verdade, vou fazê-lo. Em poucas palavras, ES6 (ou ES2015) é o lote de características que passaram a Etapa 4 de acordo com o marco de 2015. Em outras palavras, se você tem uma boa compreensão do ES6 e algum conhecimento do ES7, você tem cerca de 4 anos para alcançar…Sem pressão.
Vamos dar uma olhada no que oficialmente faz parte do ES6. A propósito, todas essas funcionalidades são oficialmente suportadas em todos os navegadores. Em outras palavras, você não precisa do Babel para usar nenhum deles (a menos que você suporte o IE 11, que está faltando alguns).
No ES6 nós temos:
A capacidade de criar e herdar classes.
class MyComponent extends React.Components {}
Módulos ES6 com importação e exportação.
import * from 'React';export default MyComponent;
Geradores
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
Perguntaste? Decoradores, desestruturação de objectos (como os adereços React: {…props}) e assim por diante não fazem parte do ES6!
Sobre o ES7 (ES2016) aqui está o que temos. É uma actualização bastante pequena:
- O operador de exponenciação
base ** exponent
- Array inclui
array.includes(myItem) // true or false
Source: http://ecma-international.org/ecma-262/7.0/
Como você provavelmente já notou, não, Async/Await não faz parte do ES7, mas ES8!
ES8, ES9, ES10
Todos aqueles que tiveram uma entrevista relacionada ao JavaScript nos últimos 2 anos, já foram questionados pelo menos 1671 vezes sobre o que é o ES6, e que característica ele traz. Mas alguém notou como o JS obviamente não parou de repente no ES6 nem no ES7, ainda assim, ninguém lhe está a perguntar sobre isso? Aqui está a sua oportunidade de corrigir as coisas!
No ES8 (ES2017), aqui estão as funcionalidades disponíveis:
E, claro, Async / Await functions:
Se já seguiu o artigo, por esta altura já o deve ter obtido: Com poucas exceções, sendo que essas funcionalidades são Stage 4, você é capaz de usá-las no navegador sem Babel (dito isso, ES8 sendo ES2017, ainda é bastante recente e algumas implementações como o motor nativo do Edge e Opera estão um pouco atrasadas).

>
Movendo para ES9. Assim como ES8 e ES6, ES9 (ou ES2018) é uma atualização muito importante:

Finalmente, passando para ES10 (ou ES2019)!
const array = ;array.sort(...)/*
*/
- Make JavaScript a superset of JSON (see details here)
E que tal ES5?
Se ES6 é ES2015, e ES7 é ES2016, consegue adivinhar qual é o ano do ES5?
…Você perdeu! (A menos que você realmente saiba, mas como eu não posso te ouvir, eu estou supondo que você perdeu). ES5 é ES2009!
Não pára aqui, antes do ES5, a última actualização do ES foi em 1999!

Como pode ver, de 97 a 99, as actualizações eram bastante frequentes, então o ES5 ia ser a única actualização em 16 anos!

Como explicamos isso? Bem, na minha opinião, há dois factores. O primeiro é técnico: O JavaScript é uma porcaria. Sinceramente, é uma porcaria. Nessa altura, tínhamos algumas alternativas ao JS: Java Applets, ActiveX, e até o Flash.
Up até 2011-ish (quando o Chrome começou a ser uma bala) não só essas tecnologias eram uma ordem de magnitude mais rápida do que o JS, mas também já tinham a maioria das funcionalidades que ainda estamos a lutar para conseguir no JS hoje em dia. (Java tem todas as funcionalidades da linguagem como classe e decoradores, suporte multi-threading, OpenGL, Sockets, etc…). Quando o Chrome e o Google entraram em cena e anunciaram em 2013 que o Java estava fora (e depois o Flash seguiu), a cruzada para fazer com que o JS alcançasse os seus concorrentes estava em andamento. Dois anos depois, tínhamos o ES6 às nossas portas.
O segundo factor é económico: 2000 é o ano da explosão da bolha Dot-com. Para o mais novo de vocês, imaginem o que tem sido o bitcoin há alguns anos atrás, as startups da Internet eram as mesmas no final dos anos 90. Startups estavam adicionando .com no final de seus nomes para conseguir enormes investimentos de risco (assim como temos uma promessa do mySuperStartup.ai hoje em dia) até que o valor caiu repentinamente nos anos 20. Esta é uma explicação muito rudimentar, e eu o convido a dar uma olhada no artigo wikipedia para um melhor.
O ponto é que a Internet parou de ganhar a tração que precisava para fazer do JS e das tecnologias relacionadas à web um foco. Mais tarde, com a ascensão da Amazon, Facebook e Google, a web teve um novo motivo para ser, e um novo motivo para prosperar. Tornou lógico que pegaríamos JS de volta! O Google foi tornado público em 2004, o Chrome foi lançado em 2008, e tornou-se o navegador mais popular em 2014: um ano antes da chegada do ES6.
O que falta? (Propostas rejeitadas)
Object.observe
Esta é provavelmente a maior rejeição de todas. Inicialmente permitiu ao JS observar quaisquer valores no código :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
Esta foi uma grande característica, e obviamente, você pode fazê-lo a partir do seu código (ou com um polifill) mas implementá-lo no browser foi a promessa de um código reactivo mais rápido (ex: Angular usa muito a observação). Ele foi retirado porque eles não podiam chegar a uma implementação com performance constante. Mais detalhes aqui.
Prometidas Canceláveis
Self-explicativo, uma funcionalidade, tenho a certeza, não é a única que falta. A idéia é permitir que os desenvolvedores possam cancelar a execução de qualquer promessa a qualquer momento.
Os casos de uso variam, por exemplo, para ter timeout do lado do cliente na operação async, ou por exemplo, se você tiver um sistema de navegação por tabulação, e o usuário clicar em uma tabulação antes de ter tempo de carregar o conteúdo da tabulação atual.
blöcks
Só estou mencionando esta porque gosto do nome, mas também porque é uma funcionalidade agradável comparável a Go Routines ou C# Tasks.
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Outros
Algumas outras propostas interessantes foram feitas, como construtores que podem ser chamados. A maioria delas são retiradas porque o autor original o fez, ou rejeitadas porque conflitam ou se sobrepõem a funcionalidades existentes/planejadas.
Deixe uma resposta