जावास्क्रिप्ट बेस्ट प्रैक्टिस

ग्लोबल वारियबलों से बचेंनयाऔर=====औरeval()

ग्लोबल वारियबलों से बचें

ग्लोबल वारियबलों का उपयोग कम से कम करें

यह सभी डेटा टाइप, ऑब्जैक्ट और फ़ंक्शनों को शामिल करता है।

ग्लोबल वारियबल और फ़ंक्शन अन्य स्क्रिप्टों द्वारा ओवरराइड किए जा सकते हैं।

स्थानीय वारियबलों का उपयोग करें और सीखें कैसे इस्तेमाल करेंक्लोज

स्थानीय वारियबलों को हमेशा घोषित करें

फ़ंक्शन में इस्तेमाल किए जाने वाले सभी वारियबलों को घोषित करना चाहिएस्थानीयवारियबल

स्थानीय वारियबलआवश्यकद्वारा var वारियबलों को घोषित करने के लिए अभिव्यक्त शब्दों का उपयोग करें, नहीं तो वे ग्लोबल वारियबल बन जाएंगे।

सख्त मोड को घोषित न करने वाले वारियबल अनुमत नहीं हैं।

शीर्ष पर घोषणा करें

एक अच्छा कोडिंग आदत सभी घोषणाओं को प्रत्येक स्क्रिप्ट या फ़ंक्शन के शीर्ष पर रखना है।

वेरियेबल को घोषणा करते समय उसे इनिशेलाइज़ेशन करना एक अच्छी आदत है

  • साफ और सुचारू कोड प्राप्त करें
  • स्थानीय वारियबलों का खोजने के लिए अच्छा स्थान
  • अनावश्यक ग्लोबल वारियबलों से बचने की आसानी
  • अनावश्यक पुन: घोषणा की संभावना कम करें
// शीर्ष पर घोषणा करें
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 सभी घोषणाओं को शीर्ष पर ले जाएगा (JavaScript hoisting)।

वारियबल चालू करें

इससे फायदे है:

वेरियेबल को घोषणा करते समय उसे इनिशेलाइज़ेशन करना एक अच्छी आदत है

  • और सबसे मुख्य बात यह है:
  • वेरियेबल को अलग स्थान पर इनिशेलाइज़ेशन करें
  • अनिर्दिष्ट मानों को बचाओ
// शुरू में घोषणा और इनिशेलाइज़ेशन करें
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 को नम्बर में बदलें

अपने आप प्रयास करें

यदि गणितीय ऑपरेशन करें, JavaScript नम्बर को स्ट्रिंग में बदल सकता है:

इंस्टांस

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() नान है, typeof x नम्बर है

अपने आप प्रयास करें

दो शब्दों को छूट करने से त्रुटि नहीं होगी और इसके बजाय NaN(Not a Number):

इंस्टांस

"Hello" - "Dolly"    // रिटर्न NaN

अपने आप प्रयास करें

इस्तेमाल करने के लिए ===

== समानता ऑपरेटर हमेशा तुलना से पहले टाइप ट्रांसफॉर्मेशन करते है (टाइप में मेल खाते हैं).

===== ऑपरेटर वाल्यू और टाइप को तय से तुलना करेगा:

इंस्टांस

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

अपने आप प्रयास करें

Parameter Defaults

यदि फ़ंक्शन को बुलाते समय कोई पैरामीटर लापता है, तो इस लापता पैरामीटर का मान undefined

undefined मानक वाल्यु आपके कोड को नष्ट कर सकता है। पैरामीटर को डिफ़ॉल्ट मान देना एक अच्छी आदत है।

इंस्टांस

function myFunction(x, y) {
    यदि (y === undefined) {
        y = 0;
    }
}

अपने आप प्रयास करें

कृपयाफ़ंक्शन पैरामीटरइस चैप्टर को पढ़ें और फ़ंक्शन पैरामीटर के बारे में अधिक जानें。

switch को default से समाप्त करें

कृपया डिफ़ॉल्ट आपके switch वाक्यांश।भले ही आपको इसकी आवश्यकता नहीं लगे।

इंस्टांस

switch (new Date().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() फ़ंक्शन का उपयोग पाठ को कोड के रूप में अनुमति देने के लिए है।अधिकांश मामलों में, इसका उपयोग करने की आवश्यकता नहीं है。

कोड चलाने की अनुमति होने के कारण, यह भी सुरक्षा समस्या का कारण है。