روش های بهتر در JavaScript
یادگیری JavaScriptاجتناب از متغیرهای سراسری، جلوگیری از new، جلوگیری از ==، اجتناب از ()eval
اجتناب از متغیرهای سراسری
به حداقل رساندن استفاده از متغیرهای سراسری.
این شامل انواع داده ها، اشیاء و توابع می شود.
متغیرها و توابع سراسری را می توان با استفاده از اسکریپت های دیگر تغییر داد.
در عوض از متغیرهای محلی استفاده کنید
همیشه متغیرهای محلی را اعلام کنید
همه متغیرهای مورد استفاده در یک تابع باید به عنوان متغیرهای محلی اعلام شوند.
متغیرهای محلی باید با کلیدواژه var اعلام شوند، در غیر این صورت آنها متغیرهای سراسری خواهند شد.
اعلامیه ها در بالا کد
یک برنامه نویس خوب برای قرار دادن همه اعلان ها در بالای هر اسکریپت یا عملکرد آن اقدام می کند.
- کد را پاک کن
- یک مکان واحد برای جستجوی متغیرهای محلی را فراهم کنید
- برای اجتناب از متغیرهای ناخواسته (ضمنی) سراسری، ساده تر شود
- کاهش احتمال اعلام مجدد ناخواسته
var firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;
این نیز برای متغیرهای حلقه ای است:
var i;
// Use later
for (i = 0; i < 5; i++) {
متغیرهای اولیه را فعال کنید
این عمل خوب برنامه نویسی برای تعیین متغیرها زمانی که شما آنها را اعلام می کنید.
- کد را پاک کن
- یک مکان واحد برای مقداردهی اولیه متغیرها را فراهم کنید
- اجتناب از ارزشهای نامشخص
var firstName = "",
lastName = "",
price = 0,
discount = 0,
fullPrice = 0,
myArray = [],
myObject = {};
هرگز شماره، رشته یا بولی را به صورت اشیا اعلام نکنید
همیشه اعداد، رشته ها یا بولین ها را به عنوان مقادیر اولیاتی تکرار کنید. نه به عنوان اشیاء
اعلام این نوع به عنوان اشیاء، سرعت اجرای را کاهش می دهد و عوارض جانبی تند و زننده ایجاد می کند:
var x = "John";
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
مشاهده مثالیا حتی بدتر:
var x = new String("John");
var y = new String("John");
(x == y) // is false because you cannot compare objects.
مشاهده مثالاز ()Object جدید استفاده نکنید
- از {} به جای ()Object جدید استفاده کنید
- از "" به جای ()String استفاده کنید
- از 0 به جای ()Numberجدید استفاده کنید
- به جای ()Boolean از false استفاده کنید
- از [] به جای ()Array جدید استفاده کنید
- از / () / به جای ()RegExp جدید
- استفاده از تابع () {} به جای()Function جدید
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/; // new regexp object
var x7 = function(){}; // new function object
مشاهده مثالاز تبدیل نوع نوع اتوماتیک مراقب باشید
مراقب باشید که اعداد به طور تصادفی به رشته ها یا NaN (Not a Number) تبدیل شوند.
در جاوا اسکریپت به راحتی یک متغیر می تواند نوع داده های مختلف داشته باشد و یک متغیر می تواند نوع داده خود را تغییر دهد:
var x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
مشاهده مثالهنگام انجام عملیات ریاضی، جاوا اسکریپت می تواند اعداد را به رشته تبدیل کند:
var x = 5 + 7; // x.valueOf() is 12, typeof x is a number
var x = 5 + "7"; // x.valueOf() is 57, typeof x is a string
var x = "5" + 7; // x.valueOf() is 57, typeof x is a string
var x = 5 - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "7"; // x.valueOf() is -2, typeof x is a number
var x = "5" - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
مشاهده مثالرشته ای را از یک رشته محاسبه می کند، یک خطا تولید نمی کند، اما NaN (نه یک عدد) را نشان می دهد:
"Hello" - "Dolly" // returns NaN
مشاهده مثالاستفاده === مقایسه
اپراتور مقایسه == همیشه قبل از مقایسه (برای تطبیق انواع) را تبدیل می کند.
عملگر === نیروهای مقایسهای از مقادیر و نوع:
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true; // false
مشاهده مثالاستفاده از پارامترهای پیش فرض
اگر یک تابع با یک آرگومان گم شده نامیده می شود، مقدار آرگومان گم شده به تعریف مشخص می شود.
مقادیر نامعین میتواند کد شما را خراب کند. عادت خوبی است برای تعیین مقادیر پیش فرض برای استدلال بهتر.
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}
مشاهده مثالاطلاعات بیشتر در مورد پارامترهای عملکرد و استدلال در پارامترهای عملکرد
پایان دادن به سوئیچ ها با مقدار 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";
}
مشاهده مثالاجتناب از استفاده از ()eval
تابع ()eval برای اجرای متن به عنوان کد استفاده می شود. تقریبا در همه موارد نباید از آن استفاده کرد.
از آنجا که اجازه می دهد تا کد دلخواه اجرا شود، این مسئله یک مشکل امنیتی را نشان می دهد.
نظر شما
>