ECMAScript 2026
JavaScript 2026 dagi yangi xususiyatlar
ECMAScript 2026 resurs boshqarish, asinxron operatsiyalarni qayta ishlash va ma'lumotlarni manipulyatsiya qilishni yaxshilashga qaratilgan bir qancha xususiyatlarni taqdim etadi:
- Yangi JavaScript Date obyekti —
Temporal Date usingvaawait usingbilan resurs boshqarishError.isError()bilan xato aniqlashArray.fromAsync()bilan asinxron massiv yaratishUint8Arrayuchun Base64 va o'n oltilik kodlash- Records & Tuples bilan o'zgarmaslik (Stage 3 taklif)
- Pattern Matching (Stage 3 taklif)
Ogohlantirish
2026 nashr hali chop etilmagan. U odatda iyun oyida chiqadi. 2025-yil noyabr holatiga ko'ra, bu qoralamadagi xususiyatlar ro'yxati bo'lib, ES2026 ga kiritilishi ehtimoli katta.
Temporal API
JavaScript 2026 dagi Temporal API sanalar va vaqtlar bilan ishlash uchun standart obyektlar va funksiyalarni taqdim etadi.
ES2026 dan boshlab, Temporal API JavaScript-da zamonaviy sana va vaqt boshqaruvining standartidir, u eski Date obyektini almashtirish uchun mo'ljallangan. Date dan farqli o'laroq, Temporal obyektlari o'zgarmasdir va vaqt zonalari va Grigoriy bo'lmagan taqvimlarni qo'llab-quvvatlaydi.
using bilan resurs boshqarish
JavaScript 2026 resurslarni (fayl handlerlari yoki ma'lumotlar bazasi ulanishlari kabi) ular ko'lamdan chiqib ketganda avtomatik boshqarish va yo'q qilish uchun ikkita kalit so'z qo'shdi. Bu try...finally bloklarining zaruriyatini kamaytiradi.
using— blok ko'lamli o'zgaruvchilarning sinxron tozalanishini ta'minlaydiawait using— tarmoq oqimlari kabi resurslar uchun asinxron tozalanishni ta'minlaydi
class MyResource {
constructor(name) {
this.name = name
myDisplay(`Resource ${this.name} acquired.`)
}
[Symbol.dispose]() {
myDisplay(`Resource ${this.name} disposed.`)
}
}
function manageResource() {
using resource = new MyResource('Database Connection')
// Resursni shu yerda ishlating
myDisplay(`Using resource: ${resource.name}`)
}using kalit so'zi tozalash jarayonini avtomatik boshqarib, resurs oqishlarini kamaytiradi va kodning o'qilishini yaxshilaydi.
- Resurs boshqarish:
usingSymbol.disposemetodini amalga oshiruvchi obyektlar uchun mo'ljallangan - Sinxron yo'q qilish:
usingbilan e'lon qilingan o'zgaruvchi ko'lamdan chiqqanda, uningSymbol.disposemetodi avtomatik chaqiriladi - Asinxron yo'q qilish: Asinxron tozalashni talab qiluvchi resurslar uchun
await usinge'lonidan foydalanish mumkin - Blok ko'lamli:
constkabi,usingbilan e'lon qilingan o'zgaruvchilar e'lon qilingan blokka mahalliy - O'zgarmas:
constkabi,usingbilan e'lon qilingan o'zgaruvchilar initsializatsiyadan keyin qayta tayinlanmaydi
await using
async function processFile() {
using fileHandle = await openFile('data.txt')
// fileHandle bilan shu yerda ishlang
} // fileHandle avtomatik yopiladiError.isError()
Error.isError() statik metodi qiymat Error obyekti ekanligini tekshiradi.
Error.isError(new TypeError()) // true
Error.isError({ name: 'Error' }) // falseError.isError() realmlar bo'ylab muvaffaqiyatsiz bo'ladigan instanceof Error ning xavfsiz alternativasidir.
Array.fromAsync()
Array.fromAsync() dasturchilarga asinxron iterabllar, massivga o'xshash obyektlar yoki Promiselardan yangi Array instansiyasini yaratishga imkon beradi.
async function* asyncGenerator() {
yield Promise.resolve(1)
yield Promise.resolve(2)
yield Promise.resolve(3)
}
async function processAsyncData() {
const arr = await Array.fromAsync(asyncGenerator())
}
processAsyncData()Uint8Array to/fromBase64()
let string = 'W3Schools 123'
const arr = Uint8Array.fromBase64(string)const arr = new Uint8Array([91, 116, 156, 134, 138, 37, 179, 93, 183])
let text = arr.toBase64()Uint8Array to/fromHex()
let text = '5b749c868a25b35db7'
const arr = Uint8Array.fromHex(text)const arr = new Uint8Array([91, 116, 156, 134, 138, 37, 179, 93, 183])
let text = arr.toHex()