JS 2015 (ES6)


ULASHISH

ECMAScript 2015

JavaScript’ning ikkinchi yirik tahriri.

ECMAScript 2015 ES6 nomi bilan ham tanilgan.

JavaScript 2015 (ES6) dagi yangi imkoniyatlar

XususiyatTavsif
let kalit so‘zi Blok ko‘rinish sohasiga (block scope) ega o‘zgaruvchini e’lon qiladi
const kalit so‘zi O‘zgarmas (immutable) konstanta o‘zgaruvchini e’lon qiladi
Arrow funksiyalariFunksiya ifodalarini yozish uchun qisqa sintaksisga ruxsat beradi
{a,b} = operatori Obyekt xususiyatlarini o‘zgaruvchilarga tayinlaydi (obyekt destrukturizatsiyasi)
[a,b] = operatori Massiv qiymatlarini o‘zgaruvchilarga tayinlaydi (massiv destrukturizatsiyasi)
... operatori Massivni yoki iterable obyektni alohida elementlarga yoyadi
For/of Iteratsiya qilinadigan obyektlarning qiymatlari bo‘ylab sikl bajaradi
Map obyektlari Kalit-qiymat juftliklariga ega obyekt; oddiy obyektlarga o‘xshaydi, lekin ulardan farq qiladi
Set obyektlari Noyob qiymatlarni saqlaydigan massiv
Klasslar JavaScript obyektlari uchun shablonlar
Promise’lar Asinxron operatsiyaning bajarilishini ifodalovchi obyekt
Symbol Hech qanday kod kira olmaydigan noyob "yashirin" identifikator
Standart parametrlar Funksiya parametrlari uchun standart qiymatlarga ruxsat beradi
Rest parametrlari Funksiyaga noaniq miqdordagi argumentlarni qabul qilish imkonini beradi
String.includes() Agar stringda belgilangan qiymat bo‘lsa, true qaytaradi
String.startsWith() Agar string belgilangan qiymatdan boshlansa, true qiymatini qaytaradi
String.endsWith() Agar string belgilangan qiymat bilan tugasa, true qiymatini qaytaradi
Array entries() Massivdan kalit/qiymat juftliklariga ega iteratorni qaytaradi
Array.from() Stringdan Array hosil qiladi
Array keys() Massiv kalitlari bilan iteratorni qaytaradi
Array find() Sinovdan o‘tgan birinchi elementning qiymatini qaytaradi
Array findIndex() Sinovdan o‘tgan birinchi elementning indeksini qaytaradi
Object.assign() Xususiyatlarni manba obyektdan maqsad obyektga nusxalaydi
RegExp /u Regular ifodada Unicode’ni to‘liq qo‘llab-quvvatlashni yoqadi
RegExp /y lastIndex xususiyatidan boshlab "yopishqoq" (sticky) qidiruvni bajaradi
isFinite() Agar argument Infinity yoki NaN bo‘lmasa, true qiymatini qaytaradi
IsNaN() Argument NaN bo‘lsa, true qiymatini qaytaradi
Modullar Kodingizni alohida fayllarga bo‘lish imkonini beradi
Reflect Obyektlar ustida past darajadagi amallar uchun obyekt
Proxy Boshqarish operatsiyalari uchun boshqa obyektlarni o‘rab turgan obyekt

Math imkoniyatlari

XususiyatTavsif
Math.trunc(x) x ning butun qismini qaytaradi
Math.sign(x) -1, 0 yoki 1 qaytaradi (x manfiy, nol yoki musbat)
Math.cbrt(x) x ning kub ildizini qaytaradi
Math.log2(x) x ning 2 asosli logarifmini qaytaradi
Math.log10(x) x ning 10 asosli logarifmini qaytaradi

Number imkoniyatlari

XususiyatTavsif
Number.EPSILON 1 va 1 dan katta eng kichik son orasidagi farq
Number.MIN_SAFE_INTEGER Aniq ifodalanishi mumkin bo‘lgan minimal qiymat
Number.MAX_SAFE_INTEGER Aniq ifodalanishi mumkin bo‘lgan maksimal qiymat
Number.isInteger() Argument butun son bo‘lsa, true qiymatini qaytaradi
Number.isSafeInteger() Argument xavfsiz butun son bo‘lsa, true qiymatini qaytaradi

Brauzerlarda qo‘llab-quvvatlash

JavaScript 2015 2017-yil iyunidan beri barcha zamonaviy brauzerlarda qo‘llab-quvvatlanadi:

Chrome
51
Edge
15
Firefox
54
Safari
10
Opera
38
May 2016 Apr 2017 Jun 2017 Sep 2016 Jun 2016

ES6 Internet Explorer-da qo‘llab-quvvatlanmaydi.


JavaScript let

let kalit so‘zi blok ko‘rinish sohasiga (block scope) ega o‘zgaruvchini e’lon qilish imkonini beradi.

Misol

var x = 10;
// Here x is 10
{
  let x = 2;
  // Here x is 2
}
// Here x is 10
O‘zingiz sinab ko‘ring »

let haqida batafsil: JavaScript Let bobida o‘qing.


JavaScript const

const kalit so‘zi konstanta (o‘zgarmas qiymatga ega JavaScript o‘zgaruvchisi) e’lon qilish imkonini beradi.

Konstantalar let o‘zgaruvchilariga o‘xshaydi, faqat qiymatni o‘zgartirib bo‘lmaydi.

Misol

var x = 10;
// Here x is 10
{
  const x = 2;
  // Here x is 2
}
// Here x is 10
O‘zingiz sinab ko‘ring »

const haqida batafsil: JavaScript Const bobida o‘qing.


Arrow funksiyalari

Arrow funksiyalari — funksiya ifodalarini yozish uchun qisqa sintaksis.

Sizga function kalit so‘zi, return kalit so‘zi yoki jingalak qavslar kerak emas.

Arrow funksiyalardan oldin:

a va b ko‘paytmasini hisoblash funksiyasi

let myFunction = function(a, b) {return a * b}

O‘zingiz sinab ko‘ring »

Arrow bilan

let myFunction = (a, b) => a * b;

O‘zingiz sinab ko‘ring »

Arrow funksiyalarining o‘z this qiymati yo‘q. Ular obyekt metodlarini aniqlash uchun unchalik mos emas.

Arrow funksiyalari ko‘tarilmaydi. Ular foydalanishdan oldin aniqlanishi kerak.

Agar funksiya bitta operator bo‘lsa, faqat return kalit so‘zini va jingalak qavslarni o‘tkazib yuborishingiz mumkin. Shu sababli, ularni doimo yozib qo‘yish yaxshi odat bo‘lishi mumkin:

Misol

// This will not work
let myFunction = (x, y) => { x * y } ;

// This will not work
let myFunction = (x, y) => return x * y ;

// Only this will work
let myFunction = (x, y) => { return x * y };
O‘zingiz sinab ko‘ring »

Arrow funksiyalari (strelka funksiyalar) haqida batafsil ma’lumotni JavaScript Arrow funksiyasi bo‘limida o‘qing.


Obyektni destrukturizatsiya qilish (Object Destructuring)

Destrukturizatsiya orqali qiymat berish (destructuring assignment) massiv qiymatlari va obyekt xususiyatlarini o‘zgaruvchilarga tayinlashni osonlashtiradi.

Misol

// Create an Object
const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

// Destructuring Assignment
let { firstName, age } = person;
O‘zingiz sinab ko‘ring »

Obyektni destrukturizatsiya qilishda o‘zgaruvchilar uchun mos obyekt kalitlari (nomlari) bilan bir xil nomdan foydalanishingiz kerak.

Kalitlarning (nomlarning) tartibi ahamiyatga ega emas.


Massivni destrukturizatsiya qilish (Array Destructuring)

Destrukturizatsiya orqali qiymat berish (destructuring assignment) massiv qiymatlari va obyekt xususiyatlarini o‘zgaruvchilarga tayinlashni osonlashtiradi.

Misol

// Create an Array
const fruits = ["Banana", "Orange", "Apple", "Mango"];

// Destructuring Assignment
let [fruit1, fruit2] = fruits;
O‘zingiz sinab ko‘ring »

Spread (...) operatori

... operatori massivni yoki iterable obyektni alohida elementlarga yoyadi.

Misol

... operatori funksiyaga argumentlarni uzatishi mumkin:

const numbers = [23,55,21,87,56];
let minValue = Math.min(...numbers);
let maxValue = Math.max(...numbers);
O‘zingiz sinab ko‘ring »

Misol

... operatori massivlarni birlashtirish uchun ishlatilishi mumkin:

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1, ...arr2];
O‘zingiz sinab ko‘ring »

Misol

const q1 = ["Jan", "Feb", "Mar"];
const q2 = ["Apr", "May", "Jun"];
const q3 = ["Jul", "Aug", "Sep"];
const q4 = ["Oct", "Nov", "Dec"];

const year = [...q1, ...q2, ...q3, ...q4];
O‘zingiz sinab ko‘ring »


For/Of sikli

JavaScript for/of operatori iteratsiya qilinadigan obyektlarning qiymatlari bo‘ylab sikl bajaradi.

for/of massivlar, stringlar, Map’lar, NodeList’lar va boshqa iteratsiya qilinadigan ma’lumotlar tuzilmalari bo‘ylab sikl bajarish imkonini beradi.

for/of sikli quyidagi sintaksisga ega:

for (variable of iterable) {
  // code block to be executed
}

variable — har bir iteratsiyada keyingi xususiyatning qiymati shu o‘zgaruvchiga beriladi. variable o‘zgaruvchisini const, let yoki var yordamida e’lon qilish mumkin.

iterable — iteratsiya qilinadigan xususiyatlarga ega obyekt.

Massiv bo‘ylab sikl

Misol

const cars = ["BMW", "Volvo", "Mini"];
let text = "";

for (let x of cars) {
  text += x + " ";
}
O‘zingiz sinab ko‘ring »

String bo‘ylab sikl

Misol

let language = "JavaScript";
let text = "";

for (let x of language) {
    text += x + " ";
}
O‘zingiz sinab ko‘ring »

Batafsil ma’lumot: JavaScript For/In/Of sikllari bo‘limida.


JavaScript Map’lari

Map — kalit-qiymat juftliklarini saqlaydigan obyekt; u obyektlarga o‘xshaydi, ammo ulardan farqlari bor:

  • Kalitlari string bo‘lgan oddiy obyektlardan farqli ravishda, kalitlar istalgan ma’lumot tipida bo‘lishi mumkin (obyektlar, funksiyalar, primitiv qiymatlar).
  • Kalitlarning dastlabki qo‘shilish tartibini saqlaydi.
Obyektdan kalit sifatida foydalanish imkoniyati Map’ning muhim xususiyatidir.

Misol

const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);
O‘zingiz sinab ko‘ring »

Map obyektlari hamda Map va massiv o‘rtasidagi farq haqida batafsil ma’lumotni JavaScript Map’lar bobida o‘qing.


JavaScript Set’lar

Set — har qanday tipdagi noyob qiymatlarni (primitiv qiymatlar, funksiyalar, obyektlar) saqlaydigan obyekt.

Set faqat noyob qiymatlarni o‘z ichiga olishi mumkin. Takroriy qiymat qo‘shishga urinish e’tiborga olinmaydi.

Misol

// Create a Set
const letters = new Set();

// Add some values to the Set
letters.add("a");
letters.add("b");
letters.add("c");
O‘zingiz sinab ko‘ring »

Set obyektlari haqida ko‘proq ma’lumotni JavaScript Set’lar bo‘limida o‘qing.


JavaScript sinflari

JavaScript sinflari JavaScript obyektlari uchun shablondir.

Sinf yaratish uchun class kalit so‘zidan foydalaning.

Har doim constructor() nomli metod qo‘shing:

Sintaksis

class ClassName {
  constructor() { ... }
}

Misol

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}

Yuqoridagi misol "Car" nomli sinfni yaratadi.

Sinf ikkita dastlabki xususiyatga ega: "name" va "year".

JavaScript sinfi obyekt emas.

Bu JavaScript obyektlari uchun shablondir.


Sinfdan foydalanish

Agar sizda sinf mavjud bo‘lsa, siz obyektlarni yaratish uchun sinfdan foydalanishingiz mumkin:

Misol

const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);

O‘zingiz sinab ko‘ring »

Sinflar haqida ko‘proq ma’lumotni JavaScript sinflari bo‘limida o‘qing.


JavaScript Promise’lar

JavaScript Promise obyekti asinxron operatsiyaning tugallanishi yoki muvaffaqiyatsizligini va uning qiymatlarini ifodalovchi obyektdir.

U hali mavjud bo‘lmagan qiymat uchun o‘rinbosar (placeholder) bo‘lib, asinxron kod bilan ishlashning tartibli usulini taqdim etadi.

Promise sintaksisi

const myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)

  myResolve(); // when successful
  myReject();  // when error
});

// "Consuming Code" (Must wait for a fulfilled Promise).
myPromise.then(
  function(value) { /* code if successful */ },
  function(error) { /* code if some error */ }
);

Promise’dan foydalanish misoli

const myPromise = new Promise(function(myResolve, myReject) {
  setTimeout(function() { myResolve("I love You !!"); }, 3000);
});

myPromise.then(function(value) {
  document.getElementById("demo").innerHTML = value;
});

O‘zingiz sinab ko‘ring »

Promise’lar haqida batafsil ma’lumotni JavaScript Promise’lar bobida o‘qing.


Symbol tipi

JavaScript Symbol — Number, String yoki Boolean kabi primitiv ma’lumot tipi.

Bu boshqa hech qanday kod tasodifan kira olmaydigan noyob "yashirin" identifikatorni ifodalaydi.

Misol uchun, agar turli kodlovchilar uchinchi tomon kodiga tegishli person obyektiga person.id xususiyatini qo‘shishni xohlasalar, ular bir-birining qiymatlarini aralashtirishi mumkin.

Symbol() yordamida noyob identifikatorlar yaratish bu muammoni hal qiladi:

Misol

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

let id = Symbol('id');
person[id] = 140353;
// Now person[id] = 140353
// but person.id is still undefined
O‘zingiz sinab ko‘ring »

Symbol’lar har doim noyob bo‘ladi.

Agar siz bir xil tavsifga ega ikkita Symbol yaratsangiz, ular turli qiymatlarga ega bo‘ladi:

Symbol("id") == Symbol("id"); // false

Parametrlarning standart qiymatlari

ES6 funksiya parametrlariga standart qiymatlarga ega bo‘lish imkonini beradi.

Misol

function myFunction(x, y = 10) {
  // y is 10 if not passed or undefined
  return x + y;
}
myFunction(5); // will return 15
O‘zingiz sinab ko‘ring »

Funksiyaning rest parametri

Rest parametri (...) funksiyaga noaniq miqdordagi argumentlarni massiv sifatida qabul qilish imkonini beradi:

Misol

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
O‘zingiz sinab ko‘ring »

String.includes()

includes() metodi, agar stringda belgilangan qiymat bo‘lsa, true, aks holda false qaytaradi:

Misol

let text = "Hello world, welcome to the universe.";
text.includes("world")    // Returns true
O‘zingiz sinab ko‘ring »

String.startsWith()

startsWith() metodi, agar string belgilangan qiymat bilan boshlansa, true, aks holda false qaytaradi:

Misol

let text = "Hello world, welcome to the universe.";

text.startsWith("Hello")   // Returns true
O‘zingiz sinab ko‘ring »

String.endsWith()

endsWith() metodi, agar string belgilangan qiymat bilan tugasa, true, aks holda false qaytaradi:

Misol

var text = "John Doe";
text.endsWith("Doe")    // Returns true
O‘zingiz sinab ko‘ring »

Massivlarning entries() metodi

Misol

Array Iterator yarating va keyin kalit/qiymat juftliklari bo‘ylab iteratsiya qiling:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const f = fruits.entries();

for (let x of f) {
  document.getElementById("demo").innerHTML += x;
}
O‘zingiz sinab ko‘ring »

entries() metodi kalit/qiymat juftliklari bilan Array Iterator obyektini qaytaradi:

[0, "Banana"][1, "Orange"][2, "Apple"][3, "Mango"]

entries() metodi asl massivni o‘zgartirmaydi.


Array.from()

Array.from() metodi length xususiyatiga ega har qanday obyektdan yoki har qanday iterable obyektdan Array obyektini qaytaradi.

Misol

Stringdan Array yarating:

Array.from("ABCDEFG")   // Returns [A,B,C,D,E,F,G]
O‘zingiz sinab ko‘ring »

Massivlarning keys() metodi

keys() metodi massiv kalitlari bilan Array Iterator obyektini qaytaradi.

Misol

Array kalitlarini o‘z ichiga olgan Array Iterator obyektini yarating:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();

let text = "";
for (let x of keys) {
  text += x + "<br>";
}
O‘zingiz sinab ko‘ring »

Massivlarning find() metodi

find() metodi test funksiyasidan o‘tgan birinchi massiv elementining qiymatini qaytaradi.

Ushbu misol 18 dan katta bo‘lgan birinchi elementni topadi (qiymatini qaytaradi):

Misol

const numbers = [4, 9, 16, 25, 29];
let first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
O‘zingiz sinab ko‘ring »

E’tibor bering, funksiya 3 ta argument qabul qiladi:

  • Element qiymati
  • Element indeksi
  • Massivning o‘zi

Massivlarning findIndex() metodi

findIndex() metodi test funksiyasidan o‘tgan birinchi massiv elementining indeksini qaytaradi.

Ushbu misol 18 dan katta bo‘lgan birinchi elementning indeksini topadi:

Misol

const numbers = [4, 9, 16, 25, 29];
let first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
O‘zingiz sinab ko‘ring »

E’tibor bering, funksiya 3 ta argument qabul qiladi:

  • Element qiymati
  • Element indeksi
  • Massivning o‘zi

Modules

Modullar ikki xil usulda import qilinadi:

Nomlangan eksportlardan import qilish

person.js faylidan nomlangan eksportlarni import qiling:

import { name, age } from "./person.js";

O‘zingiz sinab ko‘ring »

Standart eksportlardan import qilish

message.js faylidan standart eksportni import qiling:

import message from "./message.js";

O‘zingiz sinab ko‘ring »

Modullar haqida batafsil: JavaScript modullari.


JavaScript Reflect

Reflect’dan oldin obyekt amallari tarqoq edi:

  • in kalit so‘zidan foydalanish
  • delete kalit so‘zidan foydalanish
  • Object.defineProperty kabi metodlardan foydalanish
  • [[Get]] va [[Set]] kabi til mexanizmlaridan foydalanish

Reflect bularning barchasini toza Reflect metodlariga jamlaydi.

  • Reflect metodlari hamma narsani yagona ko‘rinishga keltiradi
  • Reflect metodlarining xatti-harakatini oldindan aytish mumkin
  • Reflect metodlari Proxy bilan mukammal ishlaydi

Reflect.has()

Misol

// Create an Object
const person = {name: "John", lastname: "Doe"};

let answer = Reflect.has(person, "name");
O‘zingiz sinab ko‘ring »

in operatoridan foydalanish bilan bir xil:

let answer = "name" in person;
O‘zingiz sinab ko‘ring »

JavaScript Proxy

Misol

// Create an Object
const user = { name: "Jan", age: 40 };

//Create a Proxy
const proxy = new Proxy(user, {
  get(target, property) {
    log("Getting: " + property);
    return target[property];
  },
  set(target, property, value) {
    log("Setting: " + property);
    return target[property];
  }
});

proxy.name = "John";
let text = proxy.name;
O‘zingiz sinab ko‘ring »

Yangi Math metodlari

ES6 Math obyektiga quyidagi metodlarni qo‘shdi:

  • Math.trunc()
  • Math.sign()
  • Math.cbrt()
  • Math.log2()
  • Math.log10()

Math.trunc() metodi

Math.trunc(x) x ning butun son qismini qaytaradi:

Misol

Math.trunc(4.9);    // returns 4
Math.trunc(4.7);    // returns 4
Math.trunc(4.4);    // returns 4
Math.trunc(4.2);    // returns 4
Math.trunc(-4.2);    // returns -4
O‘zingiz sinab ko‘ring »

Math.sign() metodi

Math.sign(x) -1, 0 yoki 1ni qaytaradi (agar x manfiy, null yoki musbat bo‘lsa):

Misol

Math.sign(-4);    // returns -1
Math.sign(0);    // returns 0
Math.sign(4);    // returns 1
O‘zingiz sinab ko‘ring »

Math.cbrt() metodi

Math.cbrt(x) x ning kub ildizini qaytaradi:

Misol

Math.cbrt(8);    // returns 2
Math.cbrt(64);    // returns 4
Math.cbrt(125);    // returns 5
O‘zingiz sinab ko‘ring »

Math.log2() metodi

Math.log2(x) x ning 2 asosli logarifmini qaytaradi:

Misol

Math.log2(2);    // returns 1
O‘zingiz sinab ko‘ring »

Math.log10() metodi

Math.log10(x) x ning 10 asosli logarifmini qaytaradi:

Misol

Math.log10(10);    // returns 1
O‘zingiz sinab ko‘ring »

Yangi Number xususiyatlari

ES6 Number obyektiga quyidagi xususiyatlarni qo‘shdi:

  • EPSILON
  • MIN_SAFE_INTEGER
  • MAX_SAFE_INTEGER

EPSILON misoli

1 va 1 dan katta eng kichik suzuvchi nuqtali son o‘rtasidagi farq:

let x = Number.EPSILON;
O‘zingiz sinab ko‘ring »

MIN_SAFE_INTEGER misoli

Aniq ifodalanishi mumkin bo‘lgan minimal butun qiymat:

let x = Number.MIN_SAFE_INTEGER;
O‘zingiz sinab ko‘ring »

MAX_SAFE_INTEGER misoli

Aniq ifodalanishi mumkin bo‘lgan maksimal butun qiymat:

let x = Number.MAX_SAFE_INTEGER;
O‘zingiz sinab ko‘ring »

Number.isInteger() metodi

Number.isInteger() metodi, agar argument butun son bo‘lsa, true qiymatini qaytaradi.

Misol

Number.isInteger(10);        // returns true
Number.isInteger(10.5);      // returns false
O‘zingiz sinab ko‘ring »

Number.isSafeInteger() metodi

Xavfsiz butun son - bu ikkilangan aniqlikdagi (double precision) son sifatida aniq ifodalanishi mumkin bo‘lgan butun son.

Number.isSafeInteger() metodi, agar argument xavfsiz butun son bo‘lsa, true qiymatini qaytaradi.

Misol

Number.isSafeInteger(10);    // returns true
Number.isSafeInteger(12345678901234567890);  // returns false
O‘zingiz sinab ko‘ring »

Xavfsiz butun sonlar -(253 - 1) dan +(253 - 1) gacha bo‘lgan butun sonlardir. Bu xavfsiz: 9007199254740991. Bu xavfsiz emas: 9007199254740992.


Yangi global metodlar

ES6 ikkita yangi global son metodini qo‘shdi:

  • isFinite()
  • isNaN()

isFinite() metodi

Agar argument Infinity yoki NaN bo‘lsa, global isFinite() metodi false ni qaytaradi.

Aks holda u true qaytaradi:

Misol

isFinite(10/0);       // returns false
isFinite(10/1);       // returns true
O‘zingiz sinab ko‘ring »

isNaN() metodi

Agar argument NaN bo‘lsa, global isNaN() metodi true ni qaytaradi. Aks holda u false qaytaradi:

Misol

isNaN("Hello");       // returns true
O‘zingiz sinab ko‘ring »

JavaScript Object.assign() metodi

Object.assign() metodi bir yoki bir nechta manba obyektdan maqsad obyektga xususiyatlarni nusxalaydi.

Misol

// Create Target Object
const person1 = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

// Create Source Object
const person2 = {firstName: "Anne",lastName: "Smith"};

// Assign Source to Target
Object.assign(person1, person2);
O‘zingiz sinab ko‘ring »

RegExp u modifikatori

Misollar

let text = "Hello 😄";

let pattern = /\p{Emoji}/u;
let result = pattern.test(text);
O‘zingiz sinab ko‘ring »
let text = "Hello 😄";

let pattern = /\p{Emoji}/;
let result = pattern.test(text);
O‘zingiz sinab ko‘ring »

Tavsif

u (unicode) bayrog‘i regular ifodada Unicode’ni to‘liq qo‘llab-quvvatlashni yoqadi.

Odatiy bo‘lib, JavaScript va regex 4 baytli Unicode belgilarini (masalan, kulgichlar yoki kamroq tarqalgan belgilar) ikkita alohida 2 baytli "surrogat" kod birligi sifatida ko‘radi.

u bayrog‘i namunani Unicode kod nuqtalari ketma-ketligi sifatida ko‘radi, bu esa Asosiy ko‘p tilli tekislikdan (BMP) tashqaridagi belgilarni to‘g‘ri qayta ishlash uchun muhim.


RegExp y modifikatori

Misollar

let text = "abc def ghi";
let pattern = /\w+/y;

// Start match from position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
O‘zingiz sinab ko‘ring »
let text = "abc def ghi";
let pattern = /\w+/;

// Start match from position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
O‘zingiz sinab ko‘ring »

Tavsif

y (sticky) bayrog‘i faqat RegExp obyektining lastIndex xususiyatidan boshlab moslik izlaydigan "yopishqoq" qidiruvni bajaradi.

y bayrog‘i keyingi mosliklar belgilarni o‘tkazib yubormasdan, oldingisidan keyin darhol boshlanishini ta’minlaydi.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!