جسٹ اسکریپٹ کا بہترین عمل

از متغیرهای جهانی وجدیدو===وeval()

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

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

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

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

از متغیرهای محلی استفاده کنید و یاد بگیرید که چگونه از آنها استفاده کنیدکلوز

بستگی

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

متغیرهای محلیلازم استاز طریق var با استفاده از کلمات کلیدی تخصیص دهید، در غیر این صورت آنها به متغیرهای جهانی تبدیل می‌شوند.

رژیم سخت‌گیرانه (strict mode) تخصیص متغیرهای بدون تخصیص را مجاز نمی‌کند.

در بالا تخصیص داده شود

یک عادت خوب کدنویسی این است که تمام تخصیص‌ها را در بالا هر بخش یا تابع قرار دهیم.

ایسا کرنے کا فائدہ یہ ہے:

  • کد را تمیزتر می‌کند
  • مکان خوبی برای پیدا کردن متغیرهای محلی فراهم می‌کند
  • بهتر از جلوگیری از استفاده از متغیرهای جهانی غیرضروری
  • ممکن‌ترین کاهش مجدد تخصیص‌های غیرضروری
// در بالا تخصیص داده شود
var firstName, lastName, price, discount, fullPrice;
// در آینده استفاده می‌شود
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

این می‌تواند برای متغیرهای حلقه نیز استفاده شود:

// در بالا تخصیص داده شود
var i;
// در آینده استفاده می‌شود
for (i = 0; i < 5; i++)  {

به طور پیش‌فرض، JavaScript تمام تخصیص‌ها را به بالای کد می‌برد (hoisting JavaScript).

ابتدایی کردن متغیرها

وارئی کاوتا کریجئے کا استعمال کرنا اچھی عادت ہے جب آپ وارئی کاوتا کرتے ہیں

ایسا کرنے کا فائدہ یہ ہے:

  • کمتر آلودگی والی کوڈ
  • ایک دوسرے سے الگ سلسلے میں ورت کا ابتدائی کاوتا کریجئے
  • غیر تعریف شدہ ورت سے بچیجئے
// شروع میں اعلان اور ابتدائی کاوتا کریجئے
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

متغیر کی ابتدائی کاوتا کا استعمال ہم کو متوقع استعمال اور متوقع نوعیت کی معلومات دیتا ہے

شمار، سٹرنگ یا بولین آپریشن کا استعمال نہ کریجئے

پہلے سے ہی شمار، سٹرنگ یا بولین کی طرح سے اصل ورت کے طور پر دیکھیجئے، نہ کہ آپریشن

اگر ان نوع کا اعلان آپریشن کا استعمال کیا جائے تو آپریشن کی رفتار میں آمدار اور ناخوشایند اثرات پیدا ہو سکتے ہیں:

مثال

var x = "Bill";             
var y = new String("Bill");
(x === y) // نتیجہ false ہوگا، کیونکہ x سٹرنگ ہے اور y آپریشن

آپ خود کچھ کوشش کریں

یا اور بدتر:

مثال

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // نتیجہ false ہوگا، کیونکہ آپ نہیں کچھ اپنے آپ میں اپنے آپ کا مقابلو کرسکتا ہیں

آپ خود کچھ کوشش کریں

new Object() کا استعمال نہ کریجئے

  • {} کا استعمال کریجئے تاکہ new Object() کا استعمال نکال سکیئے
  • "" کا استعمال کریجئے تاکہ new String() کا استعمال نکال سکیئے
  • 0 کا استعمال کریجئے تاکہ new Number() کا استعمال نکال سکیئے
  • false کا استعمال کریجئے تاکہ new Boolean() کا استعمال نکال سکیئے
  • [] کا استعمال کریجئے تاکہ new Array() کا استعمال نکال سکیئے
  • /()/ کا استعمال کریجئے تاکہ new RegExp() کا استعمال نکال سکیئے
  • function (){} کا استعمال کریجئے تاکہ new Function() کا استعمال نکال سکیئے

مثال

var x1 = {};           // نئی آپریشن
var x2 = "";           // نئی اصل سٹرنگ ورت
var x3 = 0;            // نئی اصل شمار ورت
var x4 = false;        // نئی اصل بولین ورت
var x5 = [];           // نئی آرائیلی آپریشن
var x6 = /()/;         // نئی ریگولر ایکسیپشن
var x7 = function(){}; // نئی فونکشن آپریشن

آپ خود کچھ کوشش کریں

خود بخود نوع تبدیلی کا معنا بتائیجئے

پتہ لگائیجئے کہ شمار کسی کس طرح سے ناگوار طور پر کوئی سٹرنگ یا NaNنوت ا نمبر

جاوااسکریپٹ کسی بغیر نوع میں کا تعلق رکھتا ہے۔ متغیر کسی بغیر نوع کا داده کا کاوتا رکھ سکتا ہے اور متغیر اپنے نوعیت کو بدل سکتا ہے:

مثال

var x = "Hello";     // typeof x به رشته است
x = 5;               // typeof x را به عدد تغییر دهید

آپ خود کچھ کوشش کریں

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

مثال

var x = 5 + 7;       // x.valueOf() به 12 است، typeof x است数值
var x = 5 + "7";     // x.valueOf() به 57 است، typeof x است رشته
var x = "5" + 7;     // x.valueOf() به 57 است، typeof x است رشته
var x = 5 - 7;       // x.valueOf() به -2 است، typeof x است数值
var x = 5 - "7";     // x.valueOf() به -2 است، typeof x است数值
var x = "5" - 7;     // x.valueOf() به -2 است، typeof x است数值
var x = 5 - "x";     // x.valueOf() به NaN است، typeof x است数值

آپ خود کچھ کوشش کریں

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

مثال

"Hello" - "Dolly"    // بازمی‌گردد به NaN

آپ خود کچھ کوشش کریں

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

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

=== آپراتورها مقدار و نوع آن‌ها را به اجبار مقایسه می‌کنند:

مثال

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

آپ خود کچھ کوشش کریں

استفاده از مقدار پیش‌فرض پارامتر

اگر در زمان فراخوانی فونکشن یک پارامتر کم باشد، مقدار این پارامتر کم تنظیم می‌شود به undefined

undefined مقدار خواهد شد که کد شما را خراب کند. تنظیم مقدار پیش‌فرض برای پارامترها عادت خوبی است.

مثال

فونکشن myFunction(x, y) {
    اگر (y === undefined) {
        y = 0;
    }
}

آپ خود کچھ کوشش کریں

فونکشن پارامٹر کے بارے میں مزید پڑھیںفونکشن پارامٹراس باب کو پڑھنے کے لئے مزید پڑھیں

سویچ کی ختم کردگی کے لئے درجہ درج استعمال کریں

استعمال کریں درجہ درج آپ کی سویچ کو ختم کرنے کے لئے استعمال کریں سویچ کہا جائے، اگر آپ اس کی ضرورت نہیں سمجھتے۔

مثال

سویچ (نیو ڈیٹا(). getDay()) {
    کیس 0:
        day = "Sunday";
        بریک;
    کیس 1:
        day = "Monday";
         بریک;
    کیس 2:
        day = "Tuesday";
         بریک;
    کیس 3:
        day = "Wednesday";
         بریک;
    کیس 4:
        day = "Thursday";
         بریک;
    کیس 5:
        day = "Friday";
         بریک;
    کیس 6:
        day = "Saturday";
         بریک;
    درجہ درج
        day = "Unknown";
} 

آپ خود کچھ کوشش کریں

eval() کا استعمال روکئیں

eval() فونکشن، ٹیکسٹ کو کوڈ کے طور پر اجازت دینے کے لئے استعمال ہوتی ہیں۔ تقریباً سبھی صورتوں میں اس کا استعمال ضروری نہیں ہوتا ہے۔

کسی بھی کوڈ کو چلانے کی اجازت دینے کی وجہ سے، یہ اپنے آپ میں ایک سیکورٹی مشکل بھی ہوتا ہے۔