JS eng yaxshi amaliyotlar


Avoid global variables, avoid new, avoid ==, avoid eval()


ULASHISH

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:

Misol (tavsiya etilmaydi)

var carName = "Volvo";
var carName;
O‘zingiz sinab ko‘ring »

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 foydalaning
  • new Number() o‘rniga 0 dan foydalaning
  • new Boolean() o‘rniga false dan foydalaning
  • new Object() o‘rniga {} dan foydalaning
  • new Array() o‘rniga [] dan foydalaning
  • new RegExp() o‘rniga /()/’dan foydalaning
  • new Function() o‘rniga function (){}’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:

Misol

"Hello" - "Dolly"    // returns NaN
O‘zingiz sinab ko‘ring »

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

Misol

function myFunction(x, y) {
  if (y === undefined) {
    y = 0;
  }
}
O‘zingiz sinab ko‘ring »

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!