ЕЦМАСцрипт 6 - 10 Авесоме Нев Феатурес
Да ли сте знали да је ЈаваСцрипт (заједно са ЈСцрипт-ом и АцтионСцрипт-ом) имплементација спецификације скриптног језика опште намјене, назване ЕЦМАСцрипт? Да би ова гадна дефиниција била мало привлачнија, можемо рећи да је ЕЦМАСцрипт (или званично ЕЦМА-262) стандард који дефинише како користимо ЈаваСцрипт и шта можемо постићи с тим.
Најновије, 6. издање језика, ЕЦМАСцрипт 2015 (или ЕС6) је вероватно најзначајније ажурирање од прве верзије 1997. године. Главни циљ најновије верзије био је да пружи бољу подршку за креирање већих апликација и библиотека. То значи зрелију синтаксу, нове пречице за лакше кодирање, као и нове методе, кључне речи, типове података и многа друга побољшања.
ЕС6 документација је опсежна, ако желите да читате много, можете преузети целу спецификацију са сајта ЕЦМА Интернатионал. У овом посту ћемо погледати 10 ручно бираних функција, иако ЕС6 нуди много више. Ако желите да експериментишете са њом, ЕС6 Фиддле је одлично место за то, а ту можете наћи и неке одломке кода..
Подршка за ЕЦМАСцрипт 6
Произвођачи претраживача постепено додају подршку за карактеристике ЕЦМАСцрипта 6. Овде можете пронаћи цоол табелу компатибилности о подршци за претраживач и компајлер за нове функције.
Ако сте заинтересовани за ЕС6 подршку у Ноде.јс, погледајте документе овде.
Иако тренутно нису подржане све карактеристике, можемо користити транспилер-ове као што је Бабел да бисмо пренијели наш ЕС6 код на ЕС5. Ту је и Грунтов плугин за Бабел, многи одлични ЕС6 додаци за Грунт и невероватан Гулп-Бабел додатак, тако да срећом имамо много избора.
На овај начин можемо почети да користимо побољшану синтаксу и могућности, док не морамо да бринемо о проблемима компатибилности. Сада да видимо карактеристике.
1. Нев дозволити
Кључна реч
ЕС6 уводи ново дозволити
кључна реч која нам омогућава да декларишемо локалне променљиве у опсегу блока, као што су израз, израз или (н унутрашња) функција. На пример, можемо да прогласимо а за
петља на следећи начин, а затим поново користи исто име променљиве (пошто је његов опсег ограничен на за
петље) у следећем ако
изјава:
за (лет и = 0; и < myArray.length; i++) // Do something inside the block if (x > 0 && к! = И) // Поново користимо "и" нека и = к * и
Помоћу дозволити
кључна реч води до чистијег и употребљивијег кода. Разлика између дозволити
и вар
је у опсегу, на пример, локална променљива дефинисана са вар
кључна реч се може користити у целој функцији окружења, док варијабле дефинисане са дозволити
раде само у свом (под) блоку. Дозволити
може се користити и глобално, у овом случају понаша се на исти начин као и вар
. Наравно, у ЕС6 још увијек можемо користити вар
ако желимо.
2. Нев цонст
Кључна реч
Нови цонст кључна реч омогућава да се декларишу константе, такође познате као непроменљиве променљиве, на које касније не можемо пренети нови садржај.
цонст МИ_ЦОНСТ = 12; цонсоле.лог (МИ_ЦОНСТ); // 12 МИ_ЦОНСТ = 16; // Силент еррор, јер не можемо поново доделити нову вриједност константи
Непроменљиве варијабле нису увијек у потпуности непромјењиве у ЕЦМАСцрипт 6, иако, као да константа држи објект, можемо касније промијенити вриједност његових својстава и метода. Исто важи и за елементе низа.
цонст МИ_ЦОНСТАНТ = миПроперти: 6; цонсоле.лог (МИ_ЦОНСТАНТ.миПроперти); // 6 МИ_ЦОНСТАНТ.миПроперти = 18; цонсоле.лог (МИ_ЦОНСТАНТ.миПроперти); // 18 цонст ОТХЕР_ЦОНСТАНТ = [12, 14, 16]; цонсоле.лог (ОТХЕР_ЦОНСТАНТ [0]); // 12 ОТХЕР_ЦОНСТАНТ [0] = 22; цонсоле.лог (ОТХЕР_ЦОНСТАНТ [0]); // 22
Још увијек не можемо директно додијелити нову вриједност објекту МИ_ЦОНСТАНТ у горњем исјечку кода, што значи да не можемо промијенити имена својстава и метода, а такођер не можемо додати ново или избрисати постојећу, тако да не можемо следећа ствар:
МИ_ЦОНСТАНТ = невПроперти: 18; цонсоле.лог (МИ_ЦОНСТАНТ.невПроперти); // еррор
3. Функције стрелице
ЕЦМАСцрипт 6 олакшава како пишемо анонимне функције, као што можемо потпуно изоставити функције
кључне речи. Потребно је само користити нову синтаксу за стрелице, названи по знаку стрелице => (стрелица дебљине), која нам даје велику пречицу.
// 1. Један параметар у ЕС6 нека сум = (а, б) => а + б; // у ЕС5 вар сум = функција (а, б) ретурн а + б; ; // 2. Без параметров в ЕС6 лет рандомНум = () => Матх.рандом (); // в ЕС5 вар рандомНум = фунцтион () ретурн Матх.рандом (); ; // 3. Без повратка у ЕС6 нека је порука = (име) => алерт ("Хи" + наме + "!"); // у ЕС5 вар порука = функција (иоурНаме) алерт ("Хи" + иоурНаме + "!"); ;
Постоји важна разлика између регуларних и стрелиц функција, то јест функције стрелица не примају Ово
вредности аутоматски као функције дефинисане са функције
кеиворд до. Функције стрелица лекицалли бинд тхе Ово
вредност за тренутни опсег. То значи да можемо лако поново користити Ово
кључна реч у унутрашњој функцији. У ЕС5 то је могуће само са следећим хацком:
// ЕС5 Хацк користити "ову" кључну ријеч у унутрашњој функцији ... аддАлл: фунцтион аддАлл (пиецес) вар селф = тхис; _.еацх (комада, функција (комад) селф.адд (комад);); ,… // ЕС6 иста унутрашња функција сада може да користи сопствено "ово" ... аддАлл: фунцтион аддАлл (пиецес) _.еацх (комада, комад => тхис.адд (комад)); ,…
Горњи код је из Мозилла Хацкс
4. Нев спреад
Оператор
Нови спреад
Оператор је означен са 3 тачке (…), а ми га можемо користити за потписивање места за више очекиваних ставки. Један од најчешћих случајева употребе оператора ширења је уметање елемената низа у други низ:
нека миАрраи = [1, 2, 3]; летАрраи = [… миАрраи, 4, 5, 6]; цонсоле.лог (невАрраи); // 1, 2, 3, 4, 5, 6
Можемо узети и утицај спреад
оператор у позивима функције у којима желимо да проследимо аргументе из низа:
нека миАрраи = [1, 2, 3]; функција сум (а, б, ц) ретурн а + б + ц; цонсоле.лог (сум (… миАрраи)); // 6
Тхе спреад
Оператор је веома флексибилан, јер се може користити више пута у истом пољу или позиву функције.
5. Задане вриједности за параметре и нове параметре одмора
Добра вест, да у ЕЦМАСцрипт 6 можемо додати подразумеване вредности параметрима функције. То значи да ако касније не прослиједимо аргументе у позиву функције, користит ће се дефаулт параметри. У ЕС5 подразумеване вредности параметара увек су подешене на недефинисан
, тако да је нова могућност да их поставимо на оно што желимо, свакако велико побољшање језика.
функција сум (а = 2, б = 4) ретурн а + б; цонсоле.лог (сум ()); // 6 цонсоле.лог (сум (3, 6)); // 9
ЕС6 такође уводи нову врсту параметра параметри одмора. Они изгледају и раде на сличан начин да шире операторе. Они су згодни ако не знамо колико ће аргумената касније бити прослеђено у позиву функције. Можемо користити својства и методе објекта Арраи на параметрима остатка:
фунцтион путИнАлпхабет (… аргс) лет сортед = аргс.сорт (); ретурн сортед; цонсоле.лог (путИнАлпхабет ("е", "ц", "м", "а", "с", "ц", "р", "и", "п", "т")); // а, ц, ц, е, и, м, п, р, с, т
6. Ново фор… оф
Изјава
Уз помоћ новог фор… оф
петљу можемо лако да прелистамо низове или друге итерабилне објекте. Заједно са новим фор… оф
ЕЦМАСцрипт 6 уводи два нова итерабилна објекта, Мап за мапе кључ / вредност, и Сет за колекције јединствених вредности које такође могу бити примитивне вредности и референце објекта. Када користимо фор… оф
код унутар блока се извршава за сваки елемент итерабилног објекта.
нека миАрраи = [1, 2, 3, 4, 5]; нека сум = 0; фор (лет и миАрраи) сум + = и; цонсоле.лог (сум); // 15 (= 1 + 2 + 3 + 4 + 5)
7. Темплате Литералс
ЕЦМАСцрипт 6 нам даје нову алтернативу за повезивање низова. Темплате литералс дозволите нам да лако креирамо шаблоне у које можемо уградити различите вредности у било које место које желимо. Да би то урадили морамо користити $ …
Синтакса свуда где желимо да убацимо податке које можемо да пренесемо из променљивих, низова или објеката на следећи начин:
лет цустомер = титле: 'Мс', име: 'Јане', презиме: 'Дое', старост: '34'; лет темплате = 'Поштовани $ цустомер.титле $ цустомер.фирстнаме $ цустомер.сурнаме! Срећан $ цустомер.аге рођендан! '; цонсоле.лог (темплате); // Драга госпођо Јане Дое! Срећан 34. рођендан!
8. Цлассес
ЕС6 уводи ЈаваСцрипт класе које су изграђене на постојећем наслеђивању заснованом на прототипу. Нова синтакса чини га једноставнијим за креирање објеката, узимање утицаја наслеђивања и поновно коришћење кода. Такође ће олакшати почетнике који долазе са других програмских језика да разумеју како ЈаваСцрипт функционише.
У ЕС6 класама се декларишу са новим класа
кључну реч, и треба да имате а конструктор ()
метода која се позива када се нови објекат инсталира помоћу нев миЦласс ()
синтакса. Такође је могуће проширити нове класе са класа Дијете проширује родитеља
синтакса која може бити позната из других објектно оријентисаних језика као што је ПХП. Такође је важно знати да, за разлику од декларација функција и варијабли, декларације класа НИСУ подигнуте у ЕЦМАСцрипт 6.
цласс Полигон конструктор (хеигхт, видтх) // конструктор класе тхис.наме = 'Полигон'; тхис.хеигхт = хеигхт; тхис.видтх = видтх; саиНаме () // цласс метход цонсоле.лог ('Здраво, ја сам', тхис.наме + '.'); нека миПолигон = нови полигон (5, 6); цонсоле.лог (миПолигон.саиНаме ()); // Здраво, ја сам Полигон.
Код изнад ЕС6 Фиддле Примера, .
9. Модули
Јесте ли се икада запитали како би било цоол ако је ЈаваСцрипт модуларан? Наравно, заобилазнице су биле ЦоммонЈС (користи се у Ноде.јс) или АМД (Асинцхроноус Модуле Дефинитион) (које се користе у РекуиреЈС), али ЕС6 уводи модуле као изворну функцију.
Морамо да дефинишемо сваки модул у његовом сопственом фајлу, а затим да користимо извоз
кључне речи за извоз променљивих и функција до друге датотеке и увоз
кључне речи да их увезете од друге датотеке, према следећој синтакси:
// фунцтионс.јс цубе (а) ретурн а * а * а; функција цубеРоот (а) ретурн Матх.цбрт (а); екпорт цубе, цубеРоот // или: екпорт цубе као цб, цубеРоот као цр // апп.јс импорт цубе, цубеРоот из 'фунцтионс'; цонсоле.лог (коцка (4)); // 64 цонсоле.лог (цубеРоот (125)); // 5
Ово решење је бриљантно, пошто је код који је смештен у модулу споља невидљив, а ми морамо да извеземо само онај део који желимо да приступимо другим датотекама. Можемо да урадимо много више задивљујућих ствари са ЕС6 модулима, овде можете наћи велико и детаљно објашњење о њима.
10. Оптерећења нових метода
ЕЦМАСцрипт 6 уводи многе нове методе за постојећи Стринг Прототипе, Арраи Објецт, Арраи Прототипе и Матх Објецт. Нове методе могу значајно побољшати начин на који можемо манипулирати тим ентитетима. Мозилла Дев има одличне кодне примере нових додатака, вреди узети времена и темељито их испитати.
Само да покажем колико су стварно кул, ево моје омиљене: метода проналажења прототипа Арраи, која нам омогућава да тестирамо одређене критеријуме на елементима низа тако што ћемо извршити цаллбацк функцију на сваком елементу, а затим вратити први елемент који враћа истина
.
функција исПриме (елемент, индек, арраи) вар старт = 2; вхиле (старт <= Math.sqrt(element)) if (element % start++ < 1) return false; return element > 1; цонсоле.лог ([4, 6, 8, 12] .финд (исПриме)); // ундефинед, нот фоунд цонсоле.лог ([4, 5, 8, 12] .финд (исПриме)); // 5
Код изнад: Мозилла Дев