٪۴۰ تخفیف تابستانه شروع شد! بزرگترین حراج سال ما

به ما بپیوندید

آموزش بهترین روش های جاوا اسکریپت

از متغیرهای جهانی اجتناب کنید ، اجتناب کنید new، اجتناب کنید ==، اجتناب کنیدeval() از متغیرهای جهانی خودداری کنید استفاده از متغیرهای جهانی را به حداقل برسانید. این شامل انواع داده ها ، اشیا و توابع است. متغیرها و توابع جهانی را…

محمد یوسفی

23 جولای 2021

از متغیرهای جهانی اجتناب کنید ، اجتناب کنید new، اجتناب کنید ==، اجتناب کنیدeval()


از متغیرهای جهانی خودداری کنید

استفاده از متغیرهای جهانی را به حداقل برسانید.

این شامل انواع داده ها ، اشیا و توابع است.

متغیرها و توابع جهانی را می توان توسط اسکریپت های دیگر بازنویسی کرد.

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


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

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

متغیرهای محلی باید با var کلمه کلیدی یا کلمه کلیدی اعلام شوند let، در غیر این صورت به متغیرهای جهانی تبدیل می شوند.

حالت سخت متغیرهای اعلام نشده را مجاز نمی داند.


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

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

این اراده:

  • کد تمیزتر بدهید
  • یک مکان واحد برای جستجوی متغیرهای محلی تهیه کنید
  • اجتناب از متغیرهای جهانی ناخواسته (ضمنی) را آسان تر کنید
  • احتمال اظهارات مجدد ناخواسته را کاهش دهید
// 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;

این مورد برای متغیرهای حلقه نیز وجود دارد:

for (let i = 0; i < 5; i++) {


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

این یک روش کدگذاری خوب است که وقتی متغیرها را آنها را اعلام می کنید ، مقداردهی اولیه کنید.

این اراده:

  • کد تمیزتر بدهید
  • یک مکان واحد برای شروع اولیه متغیرها فراهم کنید
  • از مقادیر تعریف نشده پرهیز کنید
// Declare and initiate at the beginning
let firstName = "",
let lastName = "",
let price = 0,
let discount = 0,
let fullPrice = 0,
const myArray = [],
const myObject = {};

مقداردهی اولیه متغیرها ایده استفاده مورد نظر (و نوع داده مورد نظر) را فراهم می کند.


اعلام اشیا with با ساختار

اعلان اشیا with با ساختار از تغییر تصادفی نوع جلوگیری می کند:

مثال

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

آرایه ها اعلام با توایع

اعلام آرایه ها با const از تغییر تصادفی نوع جلوگیری می کند:

مثال

let cars = ["Saab", "Volvo", "BMW"];
cars = 3;    // Changes array to number
const cars = ["Saab", "Volvo", "BMW"];
cars = 3;    // Not possible

از شی new جدید استفاده نکنید ()

  • ""به جای استفاده کنیدnew String()
  • 0به جای استفاده کنیدnew Number()
  • falseبه جای استفاده کنیدnew Boolean()
  • {}به جای استفاده کنیدnew Object()
  • []به جای استفاده کنیدnew Array()
  • /()/به جای استفاده کنیدnew RegExp()
  • function (){}به جای استفاده کنیدnew Function()

مثال

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

مراقب باشید از تبدیل نوع خودکار

جاوا اسکریپت بصورت آزاد تایپ می شود.

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

یک متغیر می تواند نوع داده خود را تغییر دهد:

مثال

let x = "Hello";     // typeof x is a string
x = 5;               // changes typeof x to a number

مواظب باشید اعداد به طور تصادفی به رشته یا NaN(نه یک عدد) تبدیل شوند.

هنگام انجام عملیات ریاضی ، JavaScript می تواند اعداد را به رشته تبدیل کند:

مثال

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

با کم کردن یک رشته از یک رشته ، خطایی ایجاد نمی شود اما بر می گرداند NaN(یک عدد نیست):

مثال

"Hello" - "Dolly"    // returns NaN

از === مقایسه استفاده کنید

==عملگر مقایسه همیشه تبدیل (به انواع تطبیق) قبل از مقایسه.

===مقایسه نیروهای اپراتور ارزش ها و نوع:

مثال

0 == "";        // true
1 == "1";       // true
1 == true;      // true

0 === "";       // false
1 === "1";      // false
1 === true;     // false

از پیش فرض های پارامتر استفاده کنید

اگر تابعی با آرگومان گمشده فراخوانی شود ، مقدار آرگومان گمشده روی آن تنظیم می شود undefined.

مقادیر تعریف نشده می تواند کد شما را خراب کند. اختصاص مقادیر پیش فرض به آرگومان ها عادت خوبی است.

مثال

function myFunction(x, y) {
  if (y === undefined) {
    y = 0;
  }
}

ECMAScript 2015 پارامترهای پیش فرض را در تعریف عملکرد اجازه می دهد:

function (a=1, b=1) { /*function code*/ }

سوئیچ های خود را با پیش فرض پایان دهید

همیشه switchجملات خود را با الف پایان دهید 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) // is false because x is a string and y is an object.

یا حتی بدتر:

مثال

let x = new String("John");             
let y = new String("John");
(x == y) // is false because you cannot compare objects.

از استفاده از eval () اجتناب کنید

این eval()تابع برای اجرای متن به عنوان کد استفاده می شود. تقریباً در همه موارد استفاده از آن ضرورتی ندارد.

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

منبع

مطالب مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها