بهترین شیوه ها (Best Practices)
این صفحه نکات مهم برای نوشتن کد تمیز جاوااسکریپت را می گوید. هدف، کد خوانا، امن، و بدون باگ است.
متغیر (Variable) سراسری نساز
متغیر سراسری همه جا دیده می شود و خطر تداخل دارد. تا می توانی محلی بساز و از بستارها (Closure) کمک بگیر.
همیشه محلی اعلام کن
داخل تابع با let یا const اعلام کن. بدون اعلام، سراسری می شود و مشکل می سازد.
اعلان ها را بگذار بالا
اعلان ها را ابتدای اسکریپت یا تابع بگذار. این کار کد را تمیزتر می کند.
let firstName;
let lastName;
let price;
let discount;
let fullPrice;
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price - discount;
for (let i = 0; i < 5; i++) {
// loop variable declared at start
}
همان جا مقداردهی اولیه کن
هنگام اعلان، مقدار اولیه بده تا از undefined دور بمانی.
let firstName = "";
let lastName = "";
let price = 0;
let discount = 0;
let fullPrice = 0;
const myArray = [];
const myObject = {};
بازاعلان با var بد است
با var بازاعلان می تواند بی صدا بگذرد. از let و const استفاده کن.
var carName = "Volvo";
var carName;
برای شیء و آرایه از const استفاده کن
با const نوع ساختار عوض نمی شود. مقدار درونش می تواند تغییر کند.
const car = { type: "Fiat", model: "500", color: "white" };
// car = "Fiat"; // مجاز نیست
const cars = ["Saab", "Volvo", "BMW"];
// cars = 3; // مجاز نیست
ساخت گرهای بی جا: new نزن
برای رشته و عدد و… از نوع های ساده استفاده کن، نه شیء.
let x1 = "";
let x2 = 0;
let x3 = false;
const x4 = {};
const x5 = [];
const x6 = /()/;
const x7 = function() {};
تبدیل نوع خودکار حواست باشد
جاوااسکریپت شُل نوع است. جمع رشته و عدد، رشته می شود.
let x = 5 + 7;
let y = 5 + "7";
let z = "5" - 7;
let w = 5 - "x";
"Hello" - "Dolly";
مقایسه: همیشه ===
اپراتور === هم مقدار را می سنجد هم نوع را. ایمن تر است.
0 === "";
1 === "1";
1 === true;
پارامتر پیش فرض بگذار
اگر آرگومان کم بود، مقدار پیش فرض جلوی باگ را می گیرد.
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}
function sum(a = 1, b = 1) {
return a + b;
}
switch را با default تمام کن
همیشه default بگذار تا حالت های پیش بینی نشده پوشش داده شود.
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";
}
عدد/رشته/بولی را شیء نکن
نوع های ساده سریع تر و تمیزترند. شیء کردنشان دردسر دارد.
let x = "John";
let y = new String("John");
// x === y // false
let a = new String("John");
let b = new String("John");
// a == b // false
از eval() دوری کن
تابع eval() متن را مثل کد اجرا می کند. خطر امنیتی دارد و معمولاً لازم نیست.
گام های عملی
- اعلان ها را اول تابع بنویس.
- از
constبرای شیء و آرایه استفاده کن. - در مقایسه، همیشه
===بزن.
جمع بندی سریع
- سراسری ها را کم کن.
- اعلان و مقداردهی زود انجام شود.
constجلوی تغییر نوع را می گیرد.- تبدیل نوع را بشناس.
eval()را فراموش کن.
برای مطالعه مرتبط، بخش راهنمای نگارش و اشتباه های رایج را هم ببین.