JS eng yaxshi amaliyotlar
Avoid global variables, avoid new, avoid ==, avoid eval()
Global o‘zgaruvchilardan saqlaning
Global o‘zgaruvchilardan foydalanishni minimallashtiring.
Bu barcha ma’lumotlar turlari, obyektlar va funksiyalarni o‘z ichiga oladi.
Global o‘zgaruvchilar va funksiyalar boshqa skriptlar tomonidan yozilishi mumkin.
Buning o‘rniga mahalliy o‘zgaruvchilardan foydalaning va yopishlarni qanday ishlatishni o‘rganing.
Har doim mahalliy o‘zgaruvchilarni e’lon qiling
Funksiyada ishlatiladigan barcha o‘zgaruvchilar mahalliy o‘zgaruvchilar sifatida e’lon qilinishi kerak.
Lokal o‘zgaruvchilar var, let yoki const kalit so‘zlari bilan e’lon qilinishi kerak, aks holda ular global o‘zgaruvchilarga aylanadi.
Qattiq rejim e’lon qilinmagan o‘zgaruvchilarga ruxsat bermaydi.
E’lonlarni yuqoriga joylashtirish
Barcha deklaratsiyalarni har bir skript yoki funksiyaning yuqori qismiga qo‘yish yaxshi kodlash amaliyotidir.
Bu:
- Tozaroq va tartibli kod beradi
- Mahalliy o‘zgaruvchilarni qidirish uchun yagona joyni taqdim eting
- Keraksiz (ko‘zda tutilgan) global o‘zgaruvchilardan qochishni osonlashtiring
- Keraksiz qayta deklaratsiyalar ehtimolini kamaytiring
// Declare at the beginning
let firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price - discount;
Bu loop o‘zgaruvchilari uchun ham amal qiladi:
for (let i = 0; i < 5; i++) {
O‘zgaruvchilarni boshlang‘ich qiymat bilan ta’minlash
O‘zgaruvchilarni e’lon qilganingizda ularni ishga tushirish yaxshi kodlash amaliyotidir.
Bu:
- Tozaroq va tartibli kod beradi
- O‘zgaruvchilarni bitta joyda e’lon qilish qulaylik yaratadi
- undefined qiymatlardan saqlaning
// Declare and initiate at the beginning
let firstName = "";
let lastName = "";
let price = 0;
let discount = 0;
let fullPrice = 0,
const myArray = [];
const myObject = {};
O‘zgaruvchilarni ishga tushirish mo‘ljallangan foydalanish (va mo‘ljallangan ma’lumotlar turi) haqida fikr beradi.
JavaScript o‘zgaruvchilarini qayta e’lon qilish
Agar siz var bilan e’lon qilingan JavaScript o‘zgaruvchisini qayta e’lon qilsangiz, u o‘z qiymatini yo‘qotmaydi.
carName o‘zgaruvchisi ushbu operatorlar bajarilgandan keyin ham “Volvo” qiymatiga ega bo‘ladi:
Siz let yoki const bilan e’lon qilingan o‘zgaruvchini qayta e’lon qila olmaysiz.
Misollar
Bu ishlamaydi:
let carName = "Volvo";
let carName;
Bu ishlamaydi:
const carName = "Volvo";
const carName;
Obyektlarni const bilan e’lon qiling
Obyektlarni const bilan e’lon qilish har qanday tasodifiy turdagi o‘zgarishlarning oldini oladi:
Misol
let car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat"; // Changes object to string
const car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat"; // Not possible
Massivlarni const bilan e’lon qiling
Massivlarni const bilan e’lon qilish turdagi tasodifiy o‘zgarishlarning oldini oladi:
Misol
let cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Changes array to number
const cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Not possible
New Object() dan foydalanmang
new String()o‘rniga""dan foydalaningnew Number()o‘rniga0dan foydalaningnew Boolean()o‘rnigafalsedan foydalaningnew Object()o‘rniga{}dan foydalaningnew Array()o‘rniga[]dan foydalaningnew RegExp()o‘rniga/()/’dan foydalaningnew Function()o‘rnigafunction (){}’dan foydalaning
Misol
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new object
const x5 = []; // new array object
const x6 = /()/; // new regexp object
const x7 = function(){}; // new function object
O‘zingiz sinab ko‘ring »
Avtomatik turdagi konversiyalardan ehtiyot bo‘ling
JavaScript — erkin tiplangan (loosely typed) til.
O‘zgaruvchi barcha ma’lumotlar turlarini o‘z ichiga olishi mumkin.
O‘zgaruvchi ma’lumotlar turini o‘zgartirishi mumkin:
Misol
let x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
O‘zingiz sinab ko‘ring »
Ehtiyot bo‘ling, sonlar tasodifan stringlarga yoki NaN (raqam emas) ga aylanib qolishi mumkin.
Matematik amallarni bajarayotganda JavaScript sonlarni stringlarga aylantirishi mumkin:
Misol
let x = 5 + 7; // x.valueOf() is 12, typeof x is a number
let x = 5 + "7"; // x.valueOf() is 57, typeof x is a string
let x = "5" + 7; // x.valueOf() is 57, typeof x is a string
let x = 5 - 7; // x.valueOf() is -2, typeof x is a number
let x = 5 - "7"; // x.valueOf() is -2, typeof x is a number
let x = "5" - 7; // x.valueOf() is -2, typeof x is a number
let x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
O‘zingiz sinab ko‘ring »
Stringni stringdan ayirish xatolikka olib kelmaydi, lekin NaN (raqam emas) ni qaytaradi:
=== taqqoslash operatoridan foydalaning
== taqqoslash operatori har doim taqqoslashdan oldin (mos turlarga) aylantiradi.
=== operatori qiymatlar va turlarni solishtirishga majbur qiladi:
Misol
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
O‘zingiz sinab ko‘ring »
Standart parametrlardan foydalaning
Agar funksiya yetishmayotgan argument bilan chaqirilsa, yetishmayotganning qiymati
argument belgilanadi
undefined .
Aniqlanmagan qiymatlar kodingizni buzishi mumkin. Argumentlarga standart qiymatlarni belgilash yaxshi odatdir.
ECMAScript 2015 Function ta’rifida standart parametrlarga ruxsat beradi:
function (a=1, b=1) { /*function code*/ }
Funksiya parametrlari va argumentlari haqida batafsil ma’lumotni Funksiya parametrlari sahifasida o‘qing
Kalitlarni standart sozlamalar bilan tugating
switch operatorlaringizni har doim default bilan yakunlang. Agar siz bor deb o‘ylasangiz ham
bunga hojat yo‘q.
Misol
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day =
"Unknown";
}
O‘zingiz sinab ko‘ring »
Obyektlar sifatida raqam, String va mantiqiydan saqlaning
Har doim Numberlar, Stringlar yoki mantiqiy qiymatlarni ibtidoiy qiymatlar sifatida ko‘rib chiqing. Obyektlar sifatida emas.
Ushbu turlarni obyektlar sifatida e’lon qilish, bajarish tezligini sekinlashtiradi va yomon yon ta’sirlarni keltirib chiqaradi:
Misol
let x = "John";
let y = new String("John");
(x === y) // is false because x is a string and y is an object.
O‘zingiz sinab ko‘ring »
Yoki undan ham yomoni:
Misol
let x = new String("John");
let y = new String("John");
(x == y) // is false because you cannot compare objects.
O‘zingiz sinab ko‘ring »
eval() dan foydalanishdan saqlaning
eval() funksiyasi matnni kod sifatida ishlatish uchun ishlatiladi. Deyarli barcha holatlarda, bu
foydalanish shart bo‘lmasligi kerak.
Chunki u ixtiyoriy kodni ishga tushirishga imkon beradi, bu xavfsizlik muammosini ham ifodalaydi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
