जावास्क्रिप्ट सर्वोत्तम अभ्यास
वैश्विक चर से बचें, बचें new
, बचें ==
, बचेंeval()
वैश्विक चर से बचें
वैश्विक चर का उपयोग कम से कम करें।
इसमें सभी डेटा प्रकार, ऑब्जेक्ट और फ़ंक्शन शामिल हैं।
वैश्विक चर और कार्यों को अन्य लिपियों द्वारा अधिलेखित किया जा सकता है।
इसके बजाय स्थानीय चर का उपयोग करें, और सीखें कि क्लोजर का उपयोग कैसे करें ।
हमेशा स्थानीय चर घोषित करें
किसी फ़ंक्शन में उपयोग किए जाने वाले सभी चर को स्थानीय चर के रूप में घोषित किया जाना चाहिए ।
स्थानीय चरों को
कीवर्ड या कीवर्ड, या कीवर्ड के साथ घोषित किया जाना चाहिए , अन्यथा वे वैश्विक चर बन जाएंगे।var
let
const
सख्त मोड अघोषित चर की अनुमति नहीं देता है।
शीर्ष पर घोषणाएं
सभी घोषणाओं को प्रत्येक स्क्रिप्ट या फ़ंक्शन के शीर्ष पर रखना एक अच्छा कोडिंग अभ्यास है।
यह करेगा:
- क्लीनर कोड दें
- स्थानीय चर देखने के लिए एक ही स्थान प्रदान करें
- अवांछित (अंतर्निहित) वैश्विक चर से बचना आसान बनाएं
- अवांछित पुन: घोषणाओं की संभावना को कम करें
// 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 = {};
प्रारंभिक चर इच्छित उपयोग (और इच्छित डेटा प्रकार) का एक विचार प्रदान करते हैं।
const . के साथ ऑब्जेक्ट घोषित करें
वस्तुओं को कॉन्स के साथ घोषित करने से किसी भी प्रकार के आकस्मिक परिवर्तन को रोका जा सकेगा:
उदाहरण
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 . के साथ Arrays घोषित करें
कॉन्स के साथ सरणियों की घोषणा करने से किसी भी प्रकार के आकस्मिक परिवर्तन को रोका जा सकेगा:
उदाहरण
let cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Changes array to number
const cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Not possible
नई वस्तु का प्रयोग न करें ()
""
के बजाय प्रयोग करें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
(नंबर नहीं) में परिवर्तित किया जा सकता है।
गणितीय संचालन करते समय, जावास्क्रिप्ट संख्याओं को स्ट्रिंग्स में बदल सकता है:
उदाहरण
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;
}
}
ईसीएमएस्क्रिप्ट 2015 फ़ंक्शन परिभाषा में डिफ़ॉल्ट पैरामीटर की अनुमति देता है:
function (a=1, b=1) { /*function code*/ }
फ़ंक्शन पैरामीटर्स पर फ़ंक्शन पैरामीटर और तर्कों के बारे में और पढ़ें
डिफ़ॉल्ट के साथ अपने स्विच समाप्त करें
switch
अपने कथनों को हमेशा a से समाप्त करें 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()
उपयोग टेक्स्ट को कोड के रूप में चलाने के लिए किया जाता है। लगभग सभी मामलों में, इसका उपयोग करना आवश्यक नहीं होना चाहिए।
क्योंकि यह मनमाने कोड को चलाने की अनुमति देता है, यह एक सुरक्षा समस्या का भी प्रतिनिधित्व करता है।