021-20483015

روش های بهتر در JavaScript

اجتناب از متغیرهای سراسری، جلوگیری از new، جلوگیری از ==، اجتناب از ()eval

اجتناب از متغیرهای سراسری

به حداقل رساندن استفاده از متغیرهای سراسری.
این شامل انواع داده ها، اشیاء و توابع می شود.
متغیرها و توابع سراسری را می توان با استفاده از اسکریپت های دیگر تغییر داد.
در عوض از متغیرهای محلی استفاده کنید

همیشه متغیرهای محلی را اعلام کنید

همه متغیرهای مورد استفاده در یک تابع باید به عنوان متغیرهای محلی اعلام شوند.

متغیرهای محلی باید با کلیدواژه var اعلام شوند، در غیر این صورت آنها متغیرهای سراسری خواهند شد.

اعلامیه ها در بالا کد

یک برنامه نویس خوب برای قرار دادن همه اعلان ها در بالای هر اسکریپت یا عملکرد آن اقدام می کند.

  • کد را پاک کن
  • یک مکان واحد برای جستجوی متغیرهای محلی را فراهم کنید
  • برای اجتناب از متغیرهای ناخواسته (ضمنی) سراسری، ساده تر شود
  • کاهش احتمال اعلام مجدد ناخواسته
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

این نیز برای متغیرهای حلقه ای است:

// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++) {

متغیرهای اولیه را فعال کنید

این عمل خوب برنامه نویسی برای تعیین متغیرها زمانی که شما آنها را اعلام می کنید.

  • کد را پاک کن
  • یک مکان واحد برای مقداردهی اولیه متغیرها را فراهم کنید
  • اجتناب از ارزشهای نامشخص
// Declare and initiate at the beginning
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 جدید

عدم استفاده از Object
 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 (نه یک عدد) را نشان می دهد:

بازگردانی 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 به پایان برسانید. حتی اگر فکر می کنید نیازی به آن وجود ندارد.

Defaults در Switch
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 برای اجرای متن به عنوان کد استفاده می شود. تقریبا در همه موارد نباید از آن استفاده کرد.

از آنجا که اجازه می دهد تا کد دلخواه اجرا شود، این مسئله یک مشکل امنیتی را نشان می دهد.

 

نظر شما

لطفا نام و نام خانوادگی خود را وارد کنید
لطفا ایمیل خود را وارد کنید لطفا ایمیل صحیح وارد کنید.
لطفا متن نظر خود را وارد کنید
>

یادگیری JavaScript

مقالات و دروس

به خبرنامه مدرسه طراحی وب ایران (وب مهراز) بپیوندید.

لطفا شماره همراه صحیح وارد کنید.
لطفا ایمیل صحیح وارد کنید.

مقالات مرتبط