ECMAScript 2025
JavaScript 2025 dagi yangi xususiyatlar
ECMAScript standartining 16-nashri, 2025-yil iyun da chiqarilgan, JavaScript-ni yanada o'qilishi va samarali qilish uchun bir qancha yaxshilanishlarni o'z ichiga oladi.
ES2025 dagi yangi Set xususiyatlari
JavaScript 2025 to'plam amallari uchun o'rnatilgan metodlarni o'z ichiga oladi, masalan intersection(), union() va difference(), qo'lda sikllar yoki uchinchi tomon kutubxonalarga ehtiyojni yo'q qiladi.
| Xususiyat | Tavsif |
|---|---|
union() | Ikki to'plamning birlashmasini qaytaradi |
intersection() | Ikki to'plamning kesishmasini qaytaradi |
difference() | Ikki to'plam o'rtasidagi farqni qaytaradi |
symmetricDifference() | Ikki to'plam o'rtasidagi simmetrik farqni qaytaradi |
isSubsetOf() | Agar bu to'plam berilgan to'plamning quyi to'plami bo'lsa true qaytaradi |
isSupersetOf() | Agar bu to'plam berilgan to'plamning yuqori to'plami bo'lsa true qaytaradi |
isDisjointFrom() | Agar bu to'plamda berilgan to'plamda elementlar bo'lmasa true qaytaradi |
ES2025 dagi yangi Iterator yordamchilari
Iterator obyektining kiritilishi dangasa baholash bilan funksional interfeys taqdim etadi, bu dasturchilarga Massivlar kabi turli iteratorlarni o'rashga imkon beradi.
| Funksiya | Tavsif |
|---|---|
drop() | Belgilangan miqdordagi elementlarni o'tkazib yuborib, qolganini qaytaruvchi iterator qaytaradi |
every() | Barcha elementlar test funksiyasini qanoatlantirsa true qaytaradi |
filter() | Filtr funksiyasini qanoatlantiruvchi elementlarni o'z ichiga olgan iterator qaytaradi |
find() | Test funksiyasini qanoatlantiruvchi birinchi elementni qaytaradi |
flatMap() | Har bir elementni xaritalashtirish va natijalarni yassilash orqali iterator qaytaradi |
forEach() | Iteratordagi har bir element uchun funksiyani bir marta bajaradi |
from() | Iterabldan iterator obyektini yaratadi |
map() | Barcha elementlari xaritalash funksiyasi bilan o'zgartirilgan iterator qaytaradi |
reduce() | Har bir elementga reduktor funksiyasini qo'llab, uni bitta qiymatga kamaytiradi |
some() | Kamida bitta element test funksiyasini qanoatlantirsa true qaytaradi |
take() | Belgilangan miqdordagi elementlarni qaytaruvchi iterator qaytaradi |
ES2025 dagi boshqa yangi xususiyatlar
| Xususiyat | Tavsif |
|---|---|
| RegExp /v flag | /u (unicode) flagining "yangilanishi" |
RegExp.escape() | Regex belgilari qochgan satrni qaytaradi |
Float16Array | 16-bitli suzuvchi nuqtali raqamlarni saqlaydigan Typed Array |
Math.f16round() | Eng yaqin 16-bitli suzuvchi nuqtali raqamni qaytaradi |
Promise.try() | Promise rad etishlarini boshqarish uchun promise zanjirini boshlaydi |
| Import Attributes | Import bayonotlarida import atributlariga ruxsat beriladi |
Ogohlantirish
Bu xususiyatlar nisbatan yangi. Eski brauzerlar muqobil kod (Polyfill) talab qilishi mumkin.
JavaScript Set union()
union() metodi ikki to'plamning birlashmasini qaytaradi — bu to'plamda yoki argument to'plamida yoki ikkalasida bo'lgan elementlarni o'z ichiga olgan yangi to'plam qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
const C = A.union(B)JavaScript Set intersection()
intersection() metodi ikki to'plamning kesishmasini qaytaradi — bu to'plamda va argument to'plamida bo'lgan elementlarni o'z ichiga olgan yangi to'plam qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
const C = A.intersection(B)JavaScript Set difference()
difference() metodi ikki to'plam o'rtasidagi farqni qaytaradi — bu to'plamda bo'lib, argument to'plamida bo'lmagan elementlarni o'z ichiga olgan yangi to'plam qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
const C = A.difference(B)JavaScript Set symmetricDifference()
symmetricDifference() metodi ikki to'plam o'rtasidagi simmetrik farqni qaytaradi — bu to'plamda yoki argument to'plamida bo'lib, lekin ikkalasida emas bo'lgan elementlarni o'z ichiga olgan yangi to'plam qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
const C = A.symmetricDifference(B)JavaScript Set isSubsetOf()
isSubsetOf() metodi bu to'plamdagi barcha elementlar argument to'plamida ham bo'lsa true qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
let answer = A.isSubsetOf(B)JavaScript Set isSupersetOf()
isSupersetOf() metodi argument to'plamidagi barcha elementlar bu to'plamda ham bo'lsa true qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
let answer = A.isSupersetOf(B)JavaScript Set isDisjointFrom()
isDisjointFrom() metodi bu to'plamda argument to'plami bilan umumiy elementlar bo'lmasa true qaytaradi:
const A = new Set(['a', 'b', 'c'])
const B = new Set(['b', 'c', 'd'])
let answer = A.isDisjointFrom(B)Iterator.from() metodi
Iterator.from() mavjud iterable yoki iterator obyektidan iterator obyektini yaratadi.
// Iterator yaratish
const myIterator = Iterator.from([1, 2, 3])
// Elementlar bo'ylab aylanish
let text = ''
for (const x of myIterator) {
text += x
}drop() metodi
drop() metodi belgilangan miqdordagi elementlarni o'tkazib yuborib, qolganini qaytaruvchi yangi iterator qaytaradi.
const myIterator = Iterator.from([1, 2, 3, 4, 5, 6])
const firstFive = myIterator.drop(5)every() metodi
every(fn) metodi iteratordagi barcha elementlar berilgan test funksiyasini qanoatlantirsa true qaytaradi.
const myIterator = Iterator.from('123456789')
let result = myIterator.every((x) => x > 7)filter() metodi
filter() metodi filtr funksiyasini qanoatlantiruvchi elementlarni o'z ichiga olgan yangi iterator qaytaradi.
const myIterator = Iterator.from([32, 33, 16, 40])
const filteredIterator = myIterator.filter((x) => x > 18)find() metodi
find(fn) metodi test funksiyasini qanoatlantiruvchi birinchi elementni qaytaradi.
const myIterator = Iterator.from([3, 10, 18, 30, 20])
let result = myIterator.find((x) => x > 18)flatMap() metodi
flatMap() metodi har bir elementni xaritalashtirish va natijalarni bitta iteratorga yassilash orqali yangi iterator qaytaradi.
const myIterator = Iterator.from([1, 2, 3, 4, 5, 6])
const mappedIterator = myIterator.flatMap((x) => [x, x * 10])forEach() metodi
forEach() metodi iteratordagi har bir element uchun berilgan funksiyani bir marta bajaradi.
const myIterator = Iterator.from('123456789')
let text = ''
myIterator.forEach((x) => (text += x))map() metodi
map() metodi barcha elementlari xaritalash funksiyasi bilan o'zgartirilgan yangi iterator qaytaradi.
const myIterator = Iterator.from('123456789')
const mappedIterator = myIterator.map((x) => x * 2)reduce() metodi
reduce() metodi akkumulyator va har bir elementga reduktor funksiyasini qo'llab, uni bitta qiymatga kamaytiradi.
const myIterator = Iterator.from([175, 50, 25])
let result = myIterator.reduce(myFunc)some() metodi
some() metodi iteratorda kamida bitta element berilgan test funksiyasini qanoatlantirsa true qaytaradi.
const myIterator = Iterator.from('123456789')
let result = myIterator.some((x) => x > 7)take() metodi
take() metodi ko'pi bilan belgilangan miqdordagi elementlarni qaytaruvchi yangi iterator qaytaradi.
const myIterator = Iterator.from([1, 2, 3, 4, 5, 6])
const firstFive = myIterator.take(5)RegExp /v flagi
v flagi u flagining "yangilanishidir". u (unicode) flagi regulyar ifodalarida to'liq Unicode qo'llab-quvvatlashni yoqadi. v flagi ko'proq Unicode-ga oid xususiyatlarni yoqadi.
Yangi xususiyatlar:
\pescape ketma-ketligi belgilar o'rniga satrlarga mos keladi- Belgilar sinfi kesishma, birlashma va ayirma sintaksislariga ruxsat berish uchun yangilangan
let text = 'Hello 😄'
let pattern = /\p{RGI_Emoji}/v
let result = pattern.test(text)Eslatma
Ikkala flagni (u va v) ishlatish SyntaxError ga olib keladi.
RegExp.escape() metodi
RegExp.escape() metodi regulyar ifoda sintaksisiga tegishli belgilar qochgan satrni qaytaradi.
const safe = RegExp.escape('[*]')
const regex = new RegExp(safe)
const oldText = '[*] is a web school.'
const newText = oldText.match(regex, 'W3Schools')Float16Array
Float16Array — IEEE 754 yarim aniqlik formatida 16-bitli (yarim aniqlikli) suzuvchi nuqtali raqamlarni saqlaydigan TypedArray. Float16Array Float32Array ga nisbatan ikki baravar kam xotira va Float64Array ga nisbatan to'rt baravar kam xotira talab qiladi.
const myArr = new Float16Array([1.5, 2.5, 3.5, 4.5])
let bytes = myArr.BYTES_PER_ELEMENT
let length = myArr.lengthMath.f16round metodi
Statik Math.f16round() metodi sonning eng yaqin 16-bitli suzuvchi nuqtali ko'rinishini qaytaradi.
let a = Math.f16round(2.6)
let b = Math.f16round(2.5)
let c = Math.f16round(2.49)
let d = Math.f16round(-2.6)
let e = Math.f16round(-2.5)
let f = Math.f16round(-2.49)Promise.try()
Promise.try() metodi sinxron yoki asinxron funksiya bajarilishini promise ga o'raydi, bu xato boshqarishni osonlashtiradi va promise zanjirlarini boshlash uchun qulay usul taqdim etadi.
function riskyOperation() {
if (Math.random() > 0.5) {
throw new Error('Muvaffaqiyatsiz!')
}
return 'Muvaffaqiyat!'
}
Promise.try(riskyOperation)
.then((result) => console.log(result))
.catch((error) => console.error(error.message))Import atributlari
ES2025 import bayonotlarida atributlarni belgilashga imkon beradi, bu modul qanday yuklanishi yoki talqin qilinishi kerakligini aniqlaydi.
import data from './data.json' with { type: 'json' }