Skip to content

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.

XususiyatTavsif
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.

FunksiyaTavsif
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

XususiyatTavsif
RegExp /v flag/u (unicode) flagining "yangilanishi"
RegExp.escape()Regex belgilari qochgan satrni qaytaradi
Float16Array16-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 AttributesImport 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:

js
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:

js
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:

js
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:

js
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:

js
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:

js
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:

js
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.

js
// 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.

js
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.

js
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.

js
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.

js
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.

js
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.

js
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.

js
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.

js
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.

js
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.

js
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:

  • \p escape ketma-ketligi belgilar o'rniga satrlarga mos keladi
  • Belgilar sinfi kesishma, birlashma va ayirma sintaksislariga ruxsat berish uchun yangilangan
js
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.

js
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.

js
const myArr = new Float16Array([1.5, 2.5, 3.5, 4.5])

let bytes = myArr.BYTES_PER_ELEMENT
let length = myArr.length

Math.f16round metodi

Statik Math.f16round() metodi sonning eng yaqin 16-bitli suzuvchi nuqtali ko'rinishini qaytaradi.

js
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.

js
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.

js
import data from './data.json' with { type: 'json' }