जेएस ट्यूटोरियल

जेएस होम जे एस परिचय जे एस कहाँ करने के लिए जेएस आउटपुट जेएस स्टेटमेंट्स जेएस सिंटेक्स जे एस टिप्पणियाँ जेएस चर जे एस लेट जेएस कॉन्स्ट जेएस ऑपरेटर्स जे एस अंकगणित जेएस असाइनमेंट जेएस डेटा प्रकार जे एस कार्य जेएस ऑब्जेक्ट्स जेएस इवेंट्स जे एस स्ट्रिंग्स जे एस स्ट्रिंग तरीके जे एस स्ट्रिंग खोज जे एस स्ट्रिंग टेम्पलेट्स जेएस नंबर जेएस संख्या के तरीके जे एस सरणी जेएस सरणी के तरीके जेएस ऐरे सॉर्ट जेएस सरणी पुनरावृत्ति जेएस ऐरे कॉन्स्ट जे एस तिथियाँ जेएस तिथि प्रारूप जेएस तिथि प्राप्त करने के तरीके JS दिनांक सेट विधियाँ जे एस मठ जे एस रैंडम जे एस बूलियन्स जेएस तुलना जे एस शर्तें जे एस स्विच जेएस लूप फॉर In . के लिए JS लूप ओएफ के लिए जेएस लूप जेएस लूप जबकि जेएस ब्रेक जेएस Iterables जेएस सेट जेएस मैप्स जेएस टाइपोफ जे एस प्रकार रूपांतरण जेएस बिटवाइज जेएस रेगएक्सपी जे एस त्रुटियाँ जेएस स्कोप जे एस उत्थापन जेएस सख्त मोड जेएस यह कीवर्ड जेएस एरो फंक्शन जेएस क्लासेस जेएस JSON जेएस डिबगिंग जेएस स्टाइल गाइड जेएस सर्वोत्तम अभ्यास जेएस गलतियाँ जेएस प्रदर्शन जेएस आरक्षित शब्द

जेएस संस्करण

जेएस संस्करण जेएस 2009 (ES5) जेएस 2015 (ईएस6) जेएस 2016 जेएस 2017 जेएस 2018 जेएस आईई / एज जेएस इतिहास

जेएस ऑब्जेक्ट्स

वस्तु परिभाषाएँ वस्तु गुण वस्तु के तरीके वस्तु प्रदर्शन ऑब्जेक्ट एक्सेसर्स वस्तु निर्माता वस्तु प्रोटोटाइप वस्तु पुनरावर्तनीय वस्तु समूह वस्तु मानचित्र वस्तु संदर्भ

जे एस कार्य

फ़ंक्शन परिभाषाएँ फंक्शन पैरामीटर्स समारोह आमंत्रण फंक्शन कॉल समारोह लागू करें फंक्शन क्लोजर

जेएस क्लासेस

कक्षा परिचय वर्ग वंशानुक्रम क्लास स्टेटिक

जे एस एसिंक

जेएस कॉलबैक जे एस अतुल्यकालिक जे एस वादा जे एस एसिंक/प्रतीक्षा

जेएस एचटीएमएल डोम

डोम परिचय डोम तरीके डोम दस्तावेज़ डोम तत्व डोम एचटीएमएल डोम फॉर्म डोम सीएसएस डोम एनिमेशन डोम घटनाक्रम डोम इवेंट श्रोता डोम नेविगेशन डोम नोड्स डोम संग्रह डोम नोड सूचियाँ

जेएस ब्राउज़र बीओएम

जेएस विंडो जेएस स्क्रीन जेएस स्थान जेएस इतिहास जेएस नेविगेटर जेएस पॉपअप अलर्ट जेएस टाइमिंग जे एस कुकीज़

जेएस वेब एपीआई

वेब एपीआई परिचय वेब फॉर्म एपीआई वेब इतिहास एपीआई वेब संग्रहण API वेब वर्कर एपीआई वेब फ़ेच एपीआई वेब जियोलोकेशन एपीआई

जे एस अजाक्स

AJAX परिचय अजाक्स एक्सएमएलएचटीपी अजाक्स अनुरोध अजाक्स प्रतिक्रिया अजाक्स एक्सएमएल फ़ाइल अजाक्स पीएचपी अजाक्स एएसपी AJAX डेटाबेस अजाक्स अनुप्रयोग अजाक्स उदाहरण

जेएस JSON

JSON परिचय JSON सिंटैक्स जेएसओएन बनाम एक्सएमएल JSON डेटा प्रकार JSON पार्स JSON स्ट्रिंगिफ़ाई JSON ऑब्जेक्ट्स JSON सरणियाँ JSON सर्वर जेएसओएन पीएचपी जेएसओएन एचटीएमएल जेएसओएन जेएसओएनपी

जेएस बनाम jQuery

jQuery चयनकर्ता jQuery एचटीएमएल jQuery सीएसएस jQuery डोम

जेएस ग्राफिक्स

जेएस ग्राफिक्स जेएस कैनवास जे एस प्लॉटली जेएस चार्ट.जेएस जेएस गूगल चार्ट जेएस डी3.जेएस

जेएस उदाहरण

जेएस उदाहरण जेएस एचटीएमएल डोम जेएस एचटीएमएल इनपुट जेएस एचटीएमएल ऑब्जेक्ट्स जेएस एचटीएमएल इवेंट्स जेएस ब्राउज़र जे एस संपादक जे एस व्यायाम जे एस प्रश्नोत्तरी जेएस प्रमाणपत्र

जे एस संदर्भ

जावास्क्रिप्ट ऑब्जेक्ट्स एचटीएमएल डोम ऑब्जेक्ट्स


जावास्क्रिप्ट सामान्य गलतियाँ


यह अध्याय कुछ सामान्य जावास्क्रिप्ट गलतियों की ओर इशारा करता है।


गलती से असाइनमेंट ऑपरेटर का उपयोग करना

जावास्क्रिप्ट प्रोग्राम अप्रत्याशित परिणाम उत्पन्न कर सकते हैं यदि कोई प्रोग्रामर गलती से एक असाइनमेंट ऑपरेटर ( =) का उपयोग करता है, बजाय एक तुलना ऑपरेटर ( ==) के एक if स्टेटमेंट में।

यह ifकथन लौटाता है false(उम्मीद के मुताबिक) क्योंकि x 10 के बराबर नहीं है:

let x = 0;
if (x == 10)

यह ifकथन लौटाता है true(शायद अपेक्षानुसार नहीं), क्योंकि 10 सत्य है:

let x = 0;
if (x = 10)

यह ifकथन लौटाता है false(शायद अपेक्षित नहीं), क्योंकि 0 गलत है:

let x = 0;
if (x = 0)

एक असाइनमेंट हमेशा असाइनमेंट का मान देता है।


ढीली तुलना की उम्मीद

नियमित तुलना में, डेटा प्रकार कोई मायने नहीं रखता। यह ifकथन सत्य लौटाता है:

let x = 10;
let y = "10";
if (x == y)

सख्त तुलना में, डेटा प्रकार मायने रखता है। यह ifकथन गलत लौटाता है:

let x = 10;
let y = "10";
if (x === y)

यह भूल जाना एक सामान्य गलती है कि switchकथन सख्त तुलना का उपयोग करते हैं:

यह case switchएक अलर्ट प्रदर्शित करेगा:

let x = 10;
switch(x) {
  case 10: alert("Hello");
}

यह case switchअलर्ट प्रदर्शित नहीं करेगा:

let x = 10;
switch(x) {
  case "10": alert("Hello");
}


भ्रमित करने वाला जोड़ और संघटन

जोड़ संख्याओं को जोड़ने के बारे में है

Concatenation तार जोड़ने के बारे में है

जावास्क्रिप्ट में दोनों ऑपरेशन एक ही +ऑपरेटर का उपयोग करते हैं।

इस वजह से, एक संख्या को एक संख्या के रूप में जोड़ने पर एक संख्या को एक स्ट्रिंग के रूप में जोड़ने से एक अलग परिणाम प्राप्त होगा:

let x = 10;
x = 10 + 5;       // Now x is 15

let y = 10;
y += "5";        // Now y is "105"

दो चर जोड़ते समय, परिणाम का अनुमान लगाना मुश्किल हो सकता है:

let x = 10;
let y = 5;
let z = x + y;     // Now z is 15

let x = 10;
let y = "5";
let z = x + y;     // Now z is "105"

गलतफहमी तैरती है

जावास्क्रिप्ट में सभी नंबरों को 64-बिट फ्लोटिंग पॉइंट नंबर (फ्लोट्स) के रूप में संग्रहीत किया जाता है।

जावास्क्रिप्ट सहित सभी प्रोग्रामिंग भाषाओं में सटीक फ़्लोटिंग पॉइंट मानों के साथ कठिनाइयाँ होती हैं:

let x = 0.1;
let y = 0.2;
let z = x + y            // the result in z will not be 0.3

उपरोक्त समस्या को हल करने के लिए, यह गुणा और भाग करने में मदद करता है:

उदाहरण

let z = (x * 10 + y * 10) / 10;       // z will be 0.3

जावास्क्रिप्ट स्ट्रिंग को तोड़ना

जावास्क्रिप्ट आपको एक कथन को दो पंक्तियों में तोड़ने की अनुमति देगा:

उदाहरण 1

let x =
"Hello World!";

लेकिन, एक स्ट्रिंग के बीच में एक स्टेटमेंट को तोड़ने से काम नहीं चलेगा:

उदाहरण 2

let x = "Hello
World!";

यदि आपको किसी स्ट्रिंग में किसी कथन को तोड़ना है, तो आपको "बैकस्लैश" का उपयोग करना चाहिए:

उदाहरण 3

let x = "Hello \
World!";

अर्धविराम का गलत स्थान

एक गलत अर्धविराम के कारण, यह कोड ब्लॉक x के मान की परवाह किए बिना निष्पादित होगा:

if (x == 19);
{
  // code block 
}

रिटर्न स्टेटमेंट को तोड़ना

किसी पंक्ति के अंत में किसी कथन को स्वचालित रूप से बंद करना डिफ़ॉल्ट JavaScript व्यवहार है।

इस वजह से, ये दो उदाहरण एक ही परिणाम देंगे:

उदाहरण 1

function myFunction(a) {
  let power = 10 
  return a * power
}

उदाहरण 2

function myFunction(a) {
  let power = 10;
  return a * power;
}

जावास्क्रिप्ट आपको एक कथन को दो पंक्तियों में तोड़ने की भी अनुमति देगा।

इस वजह से, उदाहरण 3 भी वही परिणाम देगा:

उदाहरण 3

function myFunction(a) {
  let
  power = 10; 
  return a * power;
}

लेकिन, क्या होगा यदि आप रिटर्न स्टेटमेंट को इस तरह से दो पंक्तियों में तोड़ते हैं:

उदाहरण 4

function myFunction(a) {
  let
  power = 10; 
  return
  a * power;
}

समारोह वापस आ जाएगा undefined!

क्यों? क्योंकि जावास्क्रिप्ट ने सोचा था कि आपका मतलब है:

उदाहरण 5

function myFunction(a) {
  let
  power = 10; 
  return;
  a * power;
}

व्याख्या

यदि कोई कथन अधूरा है जैसे:

let

जावास्क्रिप्ट अगली पंक्ति को पढ़कर कथन को पूरा करने का प्रयास करेगा:

power = 10;

लेकिन चूंकि यह कथन पूर्ण है:

return

जावास्क्रिप्ट स्वचालित रूप से इसे इस तरह बंद कर देगा:

return;

ऐसा इसलिए होता है क्योंकि जावास्क्रिप्ट में अर्धविराम के साथ बंद (समाप्त) कथन वैकल्पिक है।

जावास्क्रिप्ट लाइन के अंत में रिटर्न स्टेटमेंट को बंद कर देगा, क्योंकि यह एक पूर्ण स्टेटमेंट है।

रिटर्न स्टेटमेंट को कभी न तोड़ें।


नामांकित इंडेक्स के साथ ऐरे एक्सेस करना

कई प्रोग्रामिंग भाषाएं नामित इंडेक्स के साथ सरणियों का समर्थन करती हैं।

नामित अनुक्रमणिका वाले सरणी को सहयोगी सरणी (या हैश) कहा जाता है।

जावास्क्रिप्ट नामित अनुक्रमणिका के साथ सरणियों का समर्थन नहीं करता है।

जावास्क्रिप्ट में, सरणियाँ क्रमांकित अनुक्रमणिका का उपयोग करती हैं :  

उदाहरण

const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length;       // person.length will return 3
person[0];           // person[0] will return "John"

जावास्क्रिप्ट में, ऑब्जेक्ट नामित अनुक्रमणिका का उपयोग करते हैं

यदि आप किसी नामित अनुक्रमणिका का उपयोग करते हैं, तो किसी सरणी तक पहुँचने पर, जावास्क्रिप्ट सरणी को एक मानक ऑब्जेक्ट में फिर से परिभाषित करेगा।

स्वचालित पुनर्परिभाषा के बाद, सरणी विधियाँ और गुण अपरिभाषित या गलत परिणाम देंगे:

उदाहरण:

const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length;      // person.length will return 0
person[0];          // person[0] will return undefined

अल्पविराम से परिभाषाएँ समाप्त करना

ईसीएमएस्क्रिप्ट 5 में ऑब्जेक्ट और सरणी परिभाषा में अनुगामी अल्पविराम कानूनी हैं।

वस्तु उदाहरण:

person = {firstName:"John", lastName:"Doe", age:46,}

सरणी उदाहरण:

points = [40, 100, 1, 5, 25, 10,];

चेतावनी !!

इंटरनेट एक्सप्लोरर 8 क्रैश हो जाएगा।

JSON अनुगामी अल्पविराम की अनुमति नहीं देता है।

JSON:

person = {"firstName":"John", "lastName":"Doe", "age":46}

JSON:

points = [40, 100, 1, 5, 25, 10];

अपरिभाषित शून्य नहीं है

जावास्क्रिप्ट ऑब्जेक्ट, चर, गुण और विधियाँ हो सकती हैं undefined

इसके अलावा, खाली JavaScript ऑब्जेक्ट का मान हो सकता है null.

इससे यह जांचना थोड़ा मुश्किल हो सकता है कि कोई वस्तु खाली है या नहीं।

You can test if an object exists by testing if the type is undefined:

Example:

if (typeof myObj === "undefined") 

But you cannot test if an object is null, because this will throw an error if the object is undefined:

Incorrect:

if (myObj === null) 

To solve this problem, you must test if an object is not null, and not undefined.

But this can still throw an error:

Incorrect:

if (myObj !== null && typeof myObj !== "undefined") 

Because of this, you must test for not undefined before you can test for not null:

Correct:

if (typeof myObj !== "undefined" && myObj !== null)