JS qat’iy rejim

ULASHISH

"Qat’iy foydalanish" direktivasi

"use strict" direktivasi ECMAScript 5-versiyasida yangi edi.

Bu JavaScript kodi "qat’iy rejimda" bajarilishi kerakligini belgilaydi.

Bu operator emas. Bu tom ma’nodagi ifoda bo‘lib, JavaScript-ning oldingi versiyalarida e’tiborga olinmaydi.

"use strict" maqsadi kodning "qat’iy rejimda" bajarilishi kerakligini ko‘rsatishdir.

Qattiq rejimda siz, masalan, e’lon qilinmagan o‘zgaruvchilardan foydalana olmaysiz.


Strict mode-ni e’lon qilish

Qattiq rejim "qat’iy foydalanish" qo‘shilishi bilan e’lon qilinadi; skript yoki funksiyaning boshiga.

Skript boshida e’lon qilingan, u global miqyosga ega (skriptdagi barcha kodlar qat’iy rejimda ishlaydi):

Misol

"use strict";
x = 3.14;       // This will cause an error because x is not declared
O‘zingiz sinab ko‘ring »

Misol

"use strict";
myFunction();

function myFunction() {
  y = 3.14;   // This will also cause an error because y is not declared
}
O‘zingiz sinab ko‘ring »

Funksiya ichida e’lon qilingan, u mahalliy miqyosga ega (faqat funksiya ichidagi kod qat’iy rejimda):

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // This will cause an error
}
O‘zingiz sinab ko‘ring »


"Qat’iy foydalanish"; Sintaksis

Qattiq rejimni e’lon qilish uchun sintaksis JavaScript-ning eski versiyalari bilan mos ravishda ishlab chiqilgan.

JavaScript dasturida raqamli literal (4 + 5;) yoki String literalini ("Jon Doe";) kompilyatsiya qilish hech qanday nojo‘ya ta’sir ko‘rsatmaydi. U shunchaki mavjud bo‘lmagan o‘zgaruvchiga kompilyatsiya qiladi va o‘ladi.

Shunday qilib, "use strict"; faqat ma’noni "tushunadigan" yangi kompilyatorlar uchun muhimdir undan.


Nima uchun qattiq rejim?

Qattiq rejim JavaScript-ni "xavfsiz" yozishni osonlashtiradi.

Qattiq rejim ilgari qabul qilingan "yomon sintaksis" ni haqiqiy xatolarga o‘zgartiradi.

Misol tariqasida, oddiy JavaScript-da o‘zgaruvchi nomini noto‘g‘ri kiritish yangi global o‘zgaruvchini yaratadi. Qattiq rejimda bu xatoga yo‘l qo‘yadi va tasodifan global o‘zgaruvchini yaratishni imkonsiz qiladi.

Oddiy JavaScript-da, ishlab chiquvchi yozilmaydigan xususiyatlarga qiymatlarni belgilashda xatolik haqida fikr bildirmaydi.

Qattiq rejimda yozilmaydigan xususiyatga, faqat qabul qiluvchi xususiyatga, mavjud bo‘lmagan xususiyatga, mavjud bo‘lmagan o‘zgaruvchiga yoki mavjud bo‘lmagan obyektga har qanday tayinlash xatoga yo‘l qo‘yadi.


Qattiq rejimda ruxsat berilmagan

O‘zgaruvchini e’lon qilmasdan foydalanishga yo‘l qo‘yilmaydi:

"use strict";
x = 3.14;                // This will cause an error

O‘zingiz sinab ko‘ring »

Obyektlar ham o‘zgaruvchilardir.

Objectni e’lon qilmasdan ishlatish taqiqlanadi:

"use strict";
x = {p1:10, p2:20};      // This will cause an error

O‘zingiz sinab ko‘ring »

O‘zgaruvchini (yoki obyektni) o‘chirishga ruxsat berilmaydi.

"use strict";
let x = 3.14;
delete x;                // This will cause an error

O‘zingiz sinab ko‘ring »

Funksiyani o‘chirishga ruxsat berilmaydi.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

O‘zingiz sinab ko‘ring »

Parametr nomini takrorlashga ruxsat berilmaydi:

"use strict";
function x(p1, p1) {};   // This will cause an error

O‘zingiz sinab ko‘ring »

Sakkizlik sonli harflarga ruxsat berilmaydi:

"use strict";
let x = 010;             // This will cause an error

O‘zingiz sinab ko‘ring »

Sakkizlik escape ketma-ketliklariga ruxsat berilmaydi:

"use strict";
let x = "\010";            // This will cause an error

O‘zingiz sinab ko‘ring »

Faqat o‘qish xususiyatiga yozishga ruxsat berilmaydi:

"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

O‘zingiz sinab ko‘ring »

Faqat olinadigan mulkka yozishga ruxsat berilmaydi:

"use strict";
const obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

O‘zingiz sinab ko‘ring »

O‘chirilmaydigan xususiyatni o‘chirishga ruxsat berilmaydi:

"use strict";
delete Object.prototype; // This will cause an error

O‘zingiz sinab ko‘ring »

eval so‘zini o‘zgaruvchi sifatida ishlatib bo‘lmaydi:

"use strict";
let eval = 3.14;         // This will cause an error

O‘zingiz sinab ko‘ring »

arguments so‘zini o‘zgaruvchi sifatida ishlatib bo‘lmaydi:

"use strict";
let arguments = 3.14;    // This will cause an error

O‘zingiz sinab ko‘ring »

with operatoriga ruxsat berilmaydi:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

O‘zingiz sinab ko‘ring »

Xavfsizlik nuqtai nazaridan, eval() ga chaqirilgan doirada o‘zgaruvchilar yaratishga ruxsat berilmagan.

Qattiq rejimda o‘zgaruvchini e’lon qilishdan oldin ishlatib bo‘lmaydi:

"use strict";
eval ("x = 2");
alert (x);      // This will cause an error

O‘zingiz sinab ko‘ring »

Qattiq rejimda eval() var kalit so‘zidan foydalanib o‘zgaruvchini e’lon qila olmaydi:

"use strict";
eval ("var x = 2");
alert (x);    // This will cause an error

O‘zingiz sinab ko‘ring »

eval() o‘zgaruvchini let kalit so‘zidan foydalanib e’lon qila olmaydi:

eval ("let x = 2");
alert (x);        // This will cause an error

O‘zingiz sinab ko‘ring »

Funksiyalardagi this kalit so‘zi qat’iy rejimda boshqacha harakat qiladi.

this kalit so‘zi funksiyani chaqirgan obyektga ishora qiladi.

Obyekt ko‘rsatilmagan bo‘lsa, qat’iy rejimda ishlaydi undefined qaytaradi va normal ishlaydi rejim global obyektni (oyna) qaytaradi:

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();

O‘zingiz sinab ko‘ring »

Ehtiyot bo‘ling!

"Qat’iy foydalanish" direktivasi faqat skript yoki Function boshida tan olinadi.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!