JS qat’iy rejim
"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
Obyektlar ham o‘zgaruvchilardir.
Objectni e’lon qilmasdan ishlatish taqiqlanadi:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
O‘zgaruvchini (yoki obyektni) o‘chirishga ruxsat berilmaydi.
"use strict";
let x = 3.14;
delete x; // This
will cause an error
Funksiyani o‘chirishga ruxsat berilmaydi.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Parametr nomini takrorlashga ruxsat berilmaydi:
"use strict";
function x(p1, p1) {}; // This will cause an error
Sakkizlik sonli harflarga ruxsat berilmaydi:
"use strict";
let x = 010; // This
will cause an error
Sakkizlik escape ketma-ketliklariga ruxsat berilmaydi:
"use strict";
let x = "\010"; // This will cause an error
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
Faqat olinadigan mulkka yozishga ruxsat berilmaydi:
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
O‘chirilmaydigan xususiyatni o‘chirishga ruxsat berilmaydi:
"use strict";
delete Object.prototype; // This will cause an error
eval so‘zini o‘zgaruvchi sifatida ishlatib bo‘lmaydi:
"use strict";
let eval = 3.14; // This will cause an error
arguments so‘zini o‘zgaruvchi sifatida ishlatib bo‘lmaydi:
"use strict";
let arguments = 3.14; // This will cause an error
with operatoriga ruxsat berilmaydi:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
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
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
eval() o‘zgaruvchini let kalit so‘zidan foydalanib e’lon qila olmaydi:
eval ("let x = 2");
alert (x); // This
will cause an error
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();
Ehtiyot bo‘ling!
"Qat’iy foydalanish" direktivasi faqat skript yoki Function boshida tan olinadi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
