ES6 va keyingi versiyalarda qanday asosiy imkoniyatlar paydo bo'ldi?
JuniorJavaScript #javascript #es6
Savol
ES6 (ECMAScript 2015) va standartning keyingi versiyalari qanday muhim o'zgarishlarni olib keldi?
Qisqa javob
ES6 — JavaScript tili tarixidagi eng katta yangilanish: blokli ko'rinish sohasi (let/const), klasslar, modullar, strelka funksiyalar, promise'lar, destrukturizatsiya va boshqa ko'p narsalar. Keyingi yillik versiyalar (ES2016+) ko'proq nuqtaviy, lekin foydali yaxshilanishlarni qo'shadi.
Batafsil javob
ES6'dagi (2015) asosiylari:
let/const—varo'rniga blokli ko'rinish sohasiga ega o'zgaruvchilar.- Strelka funksiyalar — qisqa sintaksis, leksik
this. - Shablon satrlar — interpolyatsiya va ko'p qatorli satrlar.
- Massiv va obyektlarni destrukturizatsiya qilish.
class/extends— prototiplar ustidagi OOP sintaksisi.- Modullar (
import/export) — CommonJS/AMD o'rniga standart modul tizimi. Promise— asinxron kod uchun standart primitiv.Map/Set— kiritish tartibini saqlagan holda noyob qiymatlar va kalit-qiymat juftliklari uchun to'plamlar, istalgan tur kalit bilan.
Keyingi versiyalarning foydali qo'shimchalari (ES2016+):
Array.prototype.includes()(ES2016) — indekslarni solishtirmasdan elementning mavjudligini tekshirish.- Darajaga ko'tarish operatori
**(ES2016). Object.values()/Object.entries()(ES2017) — obyektning qiymatlari/juftliklarini massiv sifatida olish.Object.fromEntries()(ES2019) — teskari amal: juftliklar massivi → obyekt.- Nullish coalescing
??(ES2020) —||dan farqli o'laroq, standart qiymatni faqatnull/undefineduchun qo'yadi, har qanday falsy (0,'') uchun emas. - Optional chaining
?.(ES2020) — ichma-ich xususiyatlarga xavfsiz kirish.
Misol
// Nullish coalescing vs ||
const count = 0
console.log(count || 42) // 42 — 0 falsy, bu kerakli natija emas
console.log(count ?? 42) // 0 — 0 null/undefined emas
// Object.entries / fromEntries
const obj = { a: 1, b: 2 }
const doubled = Object.fromEntries(
Object.entries(obj).map(([key, value]) => [key, value * 2])
)
// { a: 2, b: 4 }
// Istalgan turdagi kalitlar bilan Map
const cache = new Map([
['foo', 'bar'],
[someObject, 'obyekt-kalit bo'yicha qiymat']
])
Qo'shimcha savollar
Maplug'at rolida oddiy obyektdan nimasi bilan yaxshiroq???va||o'rtasidagi farq nimada va bu qachon haqiqatan muhim bo'ladi?- ES-modullar (
import/export) CommonJS (require) bilan qanday bog'liq?