Welcome JavaScript 2.0

JavaScript вебде үстөмдүк кылат – жана тилдин өзөгү болгон ECMAScript жетилип келе жатат. Жылдын ортосунда күтүлүп жаткан жаңы спецификация (ES6 же JS2) буга чейин сыноодон өткөрүлө турган көптөгөн инновацияларды алып келет. Firefox учурда эң мыкты колдоону сунуштайт, бирок Google Traceur сыяктуу транспилерлер аркылуу политолтуруулар да мүмкүн. ES6нын жаңы функцияларына кыскача сереп төмөндө келтирилген.


Жаңы ачкыч анда жакшы курстар караганда көп иштерди жасап жатат: жолунан азыр так башка тилдерде сыяктуу (C / C ++, Java), анда-блоктору азыр эмне үчүн да өз масштабын бар кыймылдайт. Ошондой эле көтөргүч, башкача айтканда, тиешелүү көлөмдө өзгөрүлмө декларацияларды (мааниге ээ эмес) алып келүү оңдолот:

console.log(x);
var x = 'foo'; 
// undefined

console.log(y);
let y = 'bar';
// not initialized

Башка инновациялардын тизмеси узун: туруктуулар (const), функциялар үчүн демейки маанилер (function pow(a,b=2) { return Math.pow(a,b); }), функциялар үчүн жаңы белгилөө (let pow = (a,b=2) => Math.pow(a,b);), көптөгөн жаңы функциялар (repeat(), contains(), startsWith(), find(), findIndex()), ... үчүн жаңы цикл конструкциясы.

Ошондой эле, Set, Map, Proxy жана Symbol сыяктуу жаңы маалымат түрлөрүн, JavaScript файлдарын (башкалардын бөлүктөрүн) `import` аркылуу импорттоо мүмкүнчүлүгүн жана класстар жана мурастоо үчүн жаңы, интуитивдик синтаксисти айтып кетүү керек. Бирок, көп учурда бул саптардын литералдарына сап үзүлүштөрүн кошуу мүмкүнчүлүгү сыяктуу кичинекей, бирок көптөн күткөн функциялар (атайын тырмакчаларга көңүл буруңуз).:

`foo

bar`

JavaScript көптөн бери жөн гана веб-сайттын майда-чүйдө амалдары үчүн курал эмес, ал жумушчу столдогу аналогдорунан кем калбаган күчтүү, жогорку өндүрүмдүү веб-тиркемелерди түзүү үчүн колдонулат. Пайдалуу жаңы функциялардын көптүгү жана ES6 үчүн учурдагы колдоонун аркасында программалоо эки эсе жагымдуу.

Эки сандын теңдигин жаңы туруктуу Number.EPSILON туруктуу жардамы менен текшерүүнү ким дайыма эле каалаган эмес, анын мааниси 1 менен кийинки жылма чекиттин чоңдугунун айырмасы?

let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;
Артка