Skip to content

Archives

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Categories

  • Nicio categorie
Trend RepositoryArticles and guides
Articles

JavaScript, ES6, ES7, ES10 unde suntem?

On ianuarie 26, 2022 by admin
  • ES6 și ES7 – reminder
  • ES8, ES9, ES10
  • Cum rămâne cu ES5?
  • Ce lipsește? (Propuneri respinse)
  • Object.observe
  • Cancelable Promises
  • blöcks
  • Alte

ES6 și ES7 – reminder

Nu am de gând să vă insult și să scriu încă o introducere despre ES6…Dar, de fapt, am de gând să o fac. Pe scurt, ES6 (sau ES2015) este lotul de caracteristici care a trecut de etapa 4 conform jalonului 2015. Cu alte cuvinte, dacă aveți o bună înțelegere a ES6 și ceva cunoștințe despre ES7, aveți aproximativ 4 ani de recuperat…Fără presiune.

Să aruncăm o privire la ceea ce face parte oficial din ES6. Apropo, toate aceste caracteristici sunt suportate oficial în toate browserele. Cu alte cuvinte, nu aveți nevoie de Babel pentru a folosi niciuna dintre ele (cu excepția cazului în care suportați IE 11, căruia îi lipsesc câteva).

În ES6 avem:

Capacitatea de a crea și moșteni clase.

class MyComponent extends React.Components {}

Module ES6 cu import și export.

import * from 'React';export default MyComponent;

Generatori

let fibonacci = { 
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}

Ați observat? Decoratorii, destructurarea obiectelor (precum React props: {…props}) și așa mai departe nu fac parte din ES6!

Despre ES7 (ES2016) iată ce avem. Este o actualizare destul de mică:

  • Operatorul de exponențiere base ** exponent
  • Array include array.includes(myItem) // true or false

Sursa: http://ecma-international.org/ecma-262/7.0/

După cum probabil ați observat, nu, Async/Await nu face parte din ES7, ci din ES8!

ES8, ES9, ES10

Toată lumea care a avut un interviu legat de JavaScript în ultimii 2 ani, a fost întrebată de cel puțin 1671 de ori ce este ES6 și ce caracteristici aduce. Dar a observat cineva cum JS, evident, nu s-a oprit brusc la ES6 și nici la ES7, și totuși, nimeni nu vă întreabă despre asta? Iată ocazia ta de a îndrepta lucrurile!

În ES8 (ES2017), iată care sunt caracteristicile disponibile:

Și, bineînțeles, funcțiile Async / Await:

Dacă ai urmărit articolul, până acum ar trebui să înțelegi: Cu mici excepții, aceste funcții fiind în stadiul 4, le puteți folosi în browser fără Babel (acestea fiind spuse, ES8 fiind ES2017, este încă destul de recent și unele implementări, cum ar fi Edge și motorul nativ de la Opera, sunt puțin în urmă).

Mai departe, trecem la ES9. La fel ca ES8 și ES6, ES9 (sau ES2018) este o actualizare destul de importantă:

Majoritatea browserelor suportă deja aceste caracteristici!

În cele din urmă, trecem la ES10 (sau ES2019)!

const array = ;array.sort(...)/*

*/
  • Fă din JavaScript un superset de JSON (vezi detalii aici)

Cum rămâne cu ES5?

Dacă ES6 este ES2015, iar ES7 este ES2016, poți ghici care este anul ES5?

…Ai pierdut! (Doar dacă nu cumva chiar știi, dar din moment ce nu te pot auzi, presupun că ai pierdut). ES5 este ES2009!

Nu se oprește aici, înainte de ES5, ultima actualizare a ES a fost în 1999!

Cum vedeți, din 97 până în 99, actualizările au fost destul de frecvente, apoi ES5 avea să fie singura actualizare în 16 ani!

Cum ne explicăm asta? Ei bine, în opinia mea, există doi factori care explică acest lucru. Primul este de natură tehnică: JavaScript este nașpa. Sincer, chiar așa este. Pe atunci, aveam câteva alternative la JS: Java Applets, ActiveX și chiar Flash.

Până prin 2011-ish (când Chrome a început să fie un glonț) nu numai că aceste tehnologii erau cu un ordin de mărime mai rapide decât JS, dar aveau deja majoritatea funcțiilor pe care încă ne luptăm să le obținem în JS în zilele noastre. (Java are toate caracteristicile limbajului, cum ar fi clasele și decoratorii, suportă multi-threading, OpenGL, Sockets, etc…). Când Chrome și Google au intrat în scenă și au anunțat în 2013 că Java a fost eliminat (și apoi a urmat Flash), a început cruciada pentru a face JS să ajungă din urmă concurenții săi. Doi ani mai târziu, aveam ES6 la ușă.

Cel de-al doilea factor este economic: 2000 este anul spargerii bulei Dot-com. Pentru cei mai tineri dintre voi, imaginați-vă ce a fost bitcoinul acum câțiva ani, startup-urile de internet erau la fel la sfârșitul anilor 90. Startup-urile adăugau .com la sfârșitul numelor lor pentru a obține investiții de risc uriașe (la fel cum avem un gaj de mySuperStartup.ai în zilele noastre), până când valoarea a scăzut brusc în anii 20. Aceasta este o explicație foarte rudimentară și vă invit să aruncați o privire la articolul de pe wikipedia pentru una mai bună.

Ideea este că Internetul a încetat să mai câștige tracțiunea de care avea nevoie pentru a face din JS și din tehnologiile legate de web un punct de interes. Mai târziu, odată cu ascensiunea Amazon, Facebook și Google, web-ul a avut un nou motiv de a fi și un nou motiv de a prospera. A fost logic să reluăm JS! Google a fost făcut public în 2004, Chrome a fost lansat în 2008 și a devenit cel mai popular browser în 2014: cu un an înainte de sosirea ES6.

Ce lipsește? (Propuneri respinse)

Object.observe

Aceasta este probabil cea mai mare respingere dintre toate. Inițial, permitea JS să observe orice valoare din cod :

var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//

Aceasta era o caracteristică grozavă și, evident, o poți face din codul tău (sau cu un polyfill), dar implementarea în browser era promisiunea unui cod reactiv mai rapid (ex: Angular folosește foarte mult observarea). A fost retrasă pentru că nu au putut ajunge la o implementare cu o performanță constantă. Mai multe detalii aici.

Cancelable Promises

Simplu explicativ, o caracteristică, sunt sigur, nu este singura care lipsește. Ideea este de a permite dezvoltatorilor să anuleze executarea oricărei promisiuni în orice moment.

Cazurile de utilizare variază, de exemplu, pentru a avea timeout pe partea clientului la o operațiune asincronă sau, de exemplu, dacă aveți un sistem de navigare bazat pe tab-uri, iar utilizatorul face clic pe un tab înainte de a avea timp să încărcați conținutul tab-ului curent.

blöcks

Îl menționez pe acesta doar pentru că îmi place numele, dar și pentru că este o caracteristică drăguță comparabilă cu Go Routines sau C# Tasks.

const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};

Alte

Au mai fost făcute câteva propuneri interesante, cum ar fi constructori apelabili. Cele mai multe dintre acestea sunt fie retrase pentru că autorul original a făcut acest lucru, fie respinse pentru că intră în conflict sau se suprapun cu caracteristici existente/planificate.

.

Lasă un răspuns Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Arhive

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Meta

  • Autentificare
  • Flux intrări
  • Flux comentarii
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress