प्रत्येक जावास्क्रिप्ट प्रोग्रामर को क्या पता होना चाहिए? [बन्द है]


368

क्या ऐसी चीज़ों का एक सेट है जो हर जावास्क्रिप्ट प्रोग्रामर को यह जानने में सक्षम होना चाहिए कि "मुझे जावास्क्रिप्ट पता है"?

जवाबों:


590

JQuery नहीं। YUI नहीं। नहीं (आदि)

चौखटे उपयोगी हो सकते हैं, लेकिन वे कभी-कभी यह जानकारी देते हैं कि जावास्क्रिप्ट और DOM वास्तव में आपसे कैसे काम करते हैं। यदि आपका उद्देश्य "मैं जावास्क्रिप्ट जानता हूं" कहने में सक्षम है, तो एक फ्रेमवर्क में बहुत समय का निवेश करना इसका विरोध है।

यहाँ कुछ जावास्क्रिप्ट भाषा विशेषताएँ दी गई हैं जिन्हें आपको पता होना चाहिए कि यह क्या कर रही है और इसे पकड़ा नहीं जाना चाहिए, लेकिन जो कई लोगों के लिए तुरंत स्पष्ट नहीं हैं:

  • वह object.propऔर object['prop']एक ही बात है (ताकि आप कृपया उपयोग करना बंद कर सकें eval, धन्यवाद); वह वस्तु गुण हमेशा तार (सरणियों के लिए भी) होते हैं; क्या for... inके लिए है (और यह क्या नहीं है )।

  • संपत्ति-सूँघने; क्या undefinedहै (और क्यों यह बदबू आ रही है ); क्यों प्रतीत होता है कि अल्पज्ञात inऑपरेटर लाभदायक है और चेक typeof/ से अलग है undefined; hasOwnProperty; का उद्देश्य delete

  • कि Numberडेटाटाइप वास्तव में एक फ्लोट है; फ़्लोट्स का उपयोग करने की भाषा-स्वतंत्र कठिनाइयाँ; parseIntअष्ट जाल से बचना ।

  • नेस्टेड फंक्शन स्कूपिंग; उस varदायरे में उपयोग की आवश्यकता जिसे आप आकस्मिक ग्लोबल्स से बचना चाहते हैं; कैसे scopes को बंद करने के लिए इस्तेमाल किया जा सकता है; बंद लूप समस्या

  • वैश्विक चर और windowसंपत्तियां कैसे टकराती हैं; कैसे वैश्विक चर और दस्तावेज़ तत्व आपस में टकराए नहीं, बल्कि IE में हैं; इससे varबचने के लिए वैश्विक दायरे में उपयोग की आवश्यकता ।

  • कोड से पहले एक परिभाषा functionको ' फहराने ' के लिए यह कथन कैसे कार्य करता है; फ़ंक्शन स्टेटमेंट और फ़ंक्शन अभिव्यक्तियों के बीच का अंतर; क्यों फ़ंक्शन फ़ंक्शन नाम का उपयोग नहीं किया जाना चाहिए

  • कंस्ट्रक्टर कैसे कार्य करता है, prototypeसंपत्ति और newऑपरेटर वास्तव में काम करते हैं; सामान्य वर्ग / उपवर्ग / उदाहरण प्रणाली जिसे आप वास्तव में चाहते थे, बनाने के लिए इसके दोहन के तरीके ; जब आप प्रोटोटाइप के बजाय क्लोजर-आधारित ऑब्जेक्ट का उपयोग करना चाहते हैं। (अधिकांश जेएस ट्यूटोरियल सामग्री इस पर पूरी तरह से भयानक है; इसे सीधे मेरे सिर में लाने में मुझे कई साल लग गए।)

  • thisकॉल-टाइम पर कैसे निर्धारित किया जाता है, बाध्य नहीं; परिणामी तरीके से काम करने का तरीका वैसा नहीं होता जैसा आप अन्य भाषाओं से उम्मीद करते हैं; कैसे बंद करने या Function#bindउस के आसपास पाने के लिए इस्तेमाल किया जा सकता है।

  • अन्य ECMAScript पांचवें संस्करण की तरह indexOf, forEachऔर कार्यात्मक-प्रोग्रामिंग विधियों परArray ; पुराने ब्राउज़रों को कैसे ठीक करें, यह सुनिश्चित करने के लिए कि आप उनका उपयोग कर सकते हैं; कॉम्पैक्ट, पठनीय कोड प्राप्त करने के लिए इनलाइन अनाम फ़ंक्शन अभिव्यक्तियों के साथ उनका उपयोग करना।

  • ब्राउज़र और उपयोगकर्ता कोड के बीच नियंत्रण का प्रवाह; तुल्यकालिक और अतुल्यकालिक निष्पादन; घटनाएं जो नियंत्रण के प्रवाह के अंदर आग लगाती हैं (उदाहरण के लिए फ़ोकस) बनाम घटनाएं और समयबाह्य जो नियंत्रण लौटते समय होती हैं; माना जाता है कि एक समान-तुल्यकालिक alertबिलिन को कॉल करना संभावित रूप से विनाशकारी फिर से प्रवेश करने का कारण बन सकता है।

  • क्रॉस-विंडो स्क्रिप्टिंग कैसे प्रभावित करती है instanceof; क्रॉस-विंडो स्क्रिप्टिंग विभिन्न दस्तावेज़ों पर नियंत्रण प्रवाह को कैसे प्रभावित करती है; postMessageउम्मीद है कि यह कैसे तय करेगा।

अंतिम दो वस्तुओं के संबंध में यह उत्तर देखें ।

सबसे अधिक, आपको गंभीर रूप से जावास्क्रिप्ट को देखना चाहिए, यह स्वीकार करते हुए कि यह ऐतिहासिक कारणों से अपूर्ण भाषा (यहां तक ​​कि अधिकांश भाषाओं से भी अधिक) है, और इसके सबसे बुरे संकटों से बचा रहा है। इस मोर्चे पर क्रॉकफोर्ड का काम निश्चित रूप से पढ़ने लायक है (हालाँकि मैं 100% उससे सहमत नहीं हूँ जिस पर "अच्छे हिस्से" हैं)।


80
आह, अंत में एक विचारशील, पूरी तरह से जवाब। अगर मैं +10 कर सकता हूं, तो मैं करूंगा। एक रूपरेखा को जानने का मतलब यह नहीं है कि आप जावास्क्रिप्ट को प्रभावी ढंग से प्रोग्राम कर सकते हैं।
टिम डाउन

6
उस सुविचारित उत्तर के लिए बहुत बहुत धन्यवाद। मैं यह जोड़ना चाहता हूं कि यदि आप जानते हैं कि फ्रेमवर्क का उपयोग करना वास्तव में कितना फायदेमंद हो सकता है। फ्रेमवर्क का सहारा लेने से पहले आपको उन चीजों को खुद से करना सीखना चाहिए।
जेवियर पारा

4
@ डैनियल: वास्तव में ऐसा नहीं है, thisजो भी आप इसे एक्सेस करने के लिए बाध्य है। इसे आज़माएँ: var o= {b: function(){alert(this===o);}};फिर o['b']();-> true। और अगर आप वास्तव में अजीब चाहते हैं , (o['b'])()-> true, लेकिन (c= o['b'])()-> false, और केवल मोज़िला में, (true? o['b'] : null)()-> true। डब्ल्यू, टी, और वास्तव में, एफ
बॉबिन

7
क्या क्रोक है! ऐसा नहीं है कि सभी अलग-अलग ब्राउज़र quirks को जानने से आप एक बेहतर JS कोडर बनते हैं। हो सकता है कि आपके साथियों के बीच अधिक सड़क श्रेय ... अंशांकन जीवन को आसान बनाते हैं और जेएस का एक अनिवार्य हिस्सा हैं, इसलिए मैं कहूंगा कि एक रूपरेखा को जानना आपको एक बेहतर जेएस कोडर बनाता है, जो चीजों को लंबा नहीं करना चाहता है।
विंस पनसियो

19
सर साइको: ध्यान दें कि इस उत्तर में से कोई भी डोम का उल्लेख नहीं करता है, जो कि आपकी मदद करने के लिए बड़े पुस्तकालय हैं। एक रूपरेखा आपको यहाँ बताई गई किसी भी चीज़ से नहीं बचा सकती है । यह सामग्री किसी भी व्यक्ति के लिए ब्राउज़र स्क्रिप्टिंग, एक फ्रेमवर्क का उपयोग करना या नहीं करना महत्वपूर्ण है।
टिम डाउन

248

कि इसे निष्क्रिय किया जा सकता है।


12
+1, मैं उन पृष्ठों से बहुत थक गया हूँ जो सुंदर इलस्ट्रेशन की मूल बातों से भी परेशान नहीं होते हैं क्योंकि "यह बहुत कठिन है और सभी को वैसे भी जावास्क्रिप्ट सक्षम किया गया है"।
१०

27
+1। एक पृष्ठ जो जावास्क्रिप्ट के बिना काम नहीं करता है वह एक ऐसा पृष्ठ है जो जेएस सक्षम होने के साथ भी नाजुक होगा।
bobince

9
@iconiK मैं अभी जाऊंगा और अपने सभी सरकारी मुवक्किलों को बताऊंगा जिनके पास विश्व स्तर पर जावास्क्रिप्ट सुरक्षा कारणों से अक्षम है, वे सभी मोरन हैं, क्या मैं?
ग्राफिकडिविएन

16
-1 यह विषय से हटकर है और वास्तव में किसी भाषा के रूप में जावास्क्रिप्ट के बारे में जानने के लिए इसका कोई मतलब नहीं है। वेब ऐप डिज़ाइन करते समय विचार करना अच्छी बात है, लेकिन यह अभी भी एक उत्तर नहीं है जो इस धागे में है।
टीएम।

24
@ टीएम, नहीं, यह वास्तव में एक महत्वपूर्ण विचार है। यह आपके दिमाग में सबसे आगे होना चाहिए क्योंकि आप उन्हें डेटाबेस में डालने से पहले मूल्यों का परीक्षण करते हैं या आपके पास अपनी वेबसाइट पर एक फैंसी जावास्क्रिप्ट पॉप अप बॉक्स के माध्यम से लॉगिन करने का एकमात्र तरीका है। जिसके बारे में बोलते हुए .... मुझे लगता है कि मुझे कुछ जांचने की जरूरत है।
एलिजाबेथ बकवल्टर

75

क्रॉकफोर्ड के जावास्क्रिप्ट में लिखे गए सामान को समझना : गुड पार्ट्स एक बहुत अच्छी धारणा है कि एक व्यक्ति एक अच्छा जेएस प्रोग्रामर है।

आप बहुत अच्छी तरह से जान सकते हैं कि JQuery जैसी अच्छी लाइब्रेरी का उपयोग कैसे करें और अभी भी जावास्क्रिप्ट के छिपे हुए हिस्सों को नहीं जानते हैं।

एक और नोट विभिन्न ब्राउज़रों पर डीबगिंग उपकरण है। जेएस प्रोग्रामर को पता होना चाहिए कि विभिन्न ब्राउज़रों में अपने कोड को कैसे डिबग किया जाए।

ओह! और JSLint को जानने से आपकी भावनाएं पूरी तरह से आहत होंगी !!


+1 उस पुस्तक के बारे में भूलते रहें, उत्कृष्ट अनुशंसा।
डेविड

8
डेवलपर. yahoo.com/yui/theater पर बहुत सारे शिक्षाप्रद और आनंददायक क्रॉकफ़ोर्ड वीडियो भी हैं - और मुझे लगता है कि मुझे crockfordfacts.com का उल्लेख करने की आवश्यकता नहीं है :-)
ndim

+1 - JSLint एक अद्भुत चीज़ है जब आप JS को एक ऐसे फ्रेमवर्क के लिए विकसित करने का प्रयास करते हैं जिसमें शून्य एम्बेडेड डिबगिंग समर्थन ( कफ साइबेल, कफ PDF) होता है।
जे। पोलफर

49

यदि आप एक सच्चे जावास्क्रिप्ट निंजा बनना चाहते हैं, तो आपको जावास्क्रिप्ट क्विज़ की पूर्णता में हर प्रश्न के उत्तर जानना चाहिए ।

अपनी भूख को बढ़ाने के लिए एक उदाहरण:

(function f(f){ 
  return typeof f(); 
})(function(){ return 1; });

यह अभिव्यक्ति क्या लौटाती है?

  • "संख्या"
  • "अपरिभाषित"
  • "समारोह"
  • त्रुटि

10
मेरे उत्तरों पर एक नज़र डालें: codingspot.com/2010/02/…
CMS

@CMS बहुत अच्छा! क्या आपको वास्तव में पहली बार सबकुछ सही मिला, या इसमें कुछ शोध शामिल हैं?
स्किलड्रिक

7
Skilldrick: मुझे लगता है कि मैं उन सभी को पहली बार मिला, मैं ECMA-262 मानक का लगातार पाठक हूं (मुझे पता है, मैं एक सनकी हूं :-)
CMS

46

यदि आप नहीं जानते तो आप जावास्क्रिप्ट नहीं जानते:

  1. बंद
  2. प्रोटोटाइप आधारित विरासत
  3. मॉड्यूल पैटर्न
  4. W3C- डोम
  5. घटनाएँ कैसे काम करती हैं

मुझे वास्तव में यह उत्तर पसंद है। यह आपके ज्ञान में अंधेरे क्षेत्रों को देखने में मदद करता है। इस चेकलिस्ट में इवेंट्स अभी भी मेरे लिए थोड़े अस्पष्ट हैं (यदि मॉड्यूल पैटर्न का अर्थ है "ग्लोबल नेमस्पेस को क्लोब न करें" और इसलिए इसमें स्कोप और वर्जन ऑपरेटर शामिल हैं)।
सिल्वोट

11
मैं यह तर्क दूंगा You don't know JavaScript if you don't know The W3C-DOM। दोनों चीजें अलग हैं।
gblazex

37

..तो जावास्क्रिप्ट नहीं जावा :)

कई, वेबसाइट विकास से शुरू करने वाले कई लोगों ने मुझे बताया है कि जावास्क्रिप्ट सिर्फ सरल जावा है!


+1 यह बिंदु बहुत मौलिक है!
अमेल्विन

71
"जावास्क्रिप्ट जावा के लिए है के रूप में कालीन कार के लिए है।"
जोश ली

1
जावास्क्रिप्ट जावा के समान है जैसा कि C # C के समान है। निश्चित रूप से वाक्यविन्यास थोड़े समान है, लेकिन जिस तरह से अलग है।
अर्लज़

4
जब तक वे Google वेब टूलकिट का उपयोग नहीं करते हैं
Afriza N. Arie

दिलचस्प बात यह है कि, Microsoft ने J3.util.Date पर IE3 के लिए JScript में Y2k शिकायत तिथि कार्यों को आधार बनाया था।
बेयर्ड रान्डेल

27
  1. अपने आप को एक जावास्क्रिप्ट लाइब्रेरी (Jquery, प्रोटोटाइप, आदि) के साथ परिचित करें।

  2. प्रमुख ब्राउज़रों के डिबगिंग टूल (MSIE 7-8, फ़ायरफ़ॉक्स, क्रोम, सफारी) का उपयोग करना सीखें

  3. उद्योग पर पढ़ें: डगलस क्रॉकफोर्ड की वेबसाइट एक खजाना है, जबकि Ajaxian.com जावास्क्रिप्ट के लिए नए, दिलचस्प और अजीब विचारों को रखने के लिए एक अच्छा ब्लॉग है। कई अन्य संसाधन हैं लेकिन वे हैं जिन्होंने मुझे सबसे अधिक मदद की।


गंभीरता से, नीचे वोट क्यों?
डेविड

+1 बहुत अधिक टैक्टिकल वोटिंग, गंभीरता से लोगों को सिर्फ अच्छे उत्तरों को उभारना चाहिए, न कि केवल उनके उत्तर को शीर्ष पर लाने की कोशिश करें।
अमेल्विन

1
@ मुरली वीपी I ने ब्राउज़रों के संदर्भ में "ज्ञात" जावास्क्रिप्ट के लिए धारणा बनाई। हैलो दुनिया के कुछ समकक्ष के बाद, आपको अपनी तार्किक और रनटाइम त्रुटियों का पता लगाने की आवश्यकता है, जो प्रति दुभाषिया के अनुसार भिन्न हो सकती है। मैं किसी भी भाषा को जानने का दावा नहीं करूंगा अगर मुझे नहीं पता कि इसे कैसे डीबग करना है। एक रूपरेखा की आवश्यकता के अनुसार, जावास्क्रिप्ट की तरह प्रारंभिक सी है, जहां सूक्ष्म कार्यान्वयन अंतर अनैच्छिक तोड़फोड़ करेंगे; jQuery और प्रोटोटाइप इन अंतरों पर चमकते हैं और उत्पादकता बढ़ाने के लिए अतिरिक्त एपीआई कॉल को जोड़ते समय जावास्क्रिप्ट को एक विश्वसनीय उपकरण बनाते हैं। (cont)
डेविड

@ मुरली वीपी निष्पक्ष होने के लिए, जावास्क्रिप्ट ने एक लंबा सफर तय किया है क्योंकि मैंने 90 के दशक में इसका उपयोग करना शुरू कर दिया था और माइक्रोसॉफ्ट के अपवाद के साथ, अन्य जावास्क्रिप्ट व्याख्याकारों ने विनिर्देशों का पालन करने और निष्पक्ष खेलने के लिए प्रभावशाली काम किया है।
डेविड

@ अच्छी व्याख्या के लिए धन्यवाद। आपसे सहमत होने की प्रवृत्ति।
मुरली वीपी



23

वेरिएबल्स तब तक वैश्विक होते हैं जब तक उन्हें स्थानीय घोषित नहीं किया जाता !!

ख़राब (DoSomething) (केवल 10 बार कहा जाता है):

function CountToTen()
{
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

अच्छा (DoSomething () को 50 बार कहा जाता है):

function CountToTen()
{
  var i;
  for(i=0; i< 10; i++)
  {
    DoSomething(i);
  }
}

function countToFive()
{
  var i;
  for(i=0; i<5; i++)
  {
    CountToTen();
  }
}

CountToFive();

2
मैंने भी कभी इस पर विचार नहीं किया। बहुत अच्छी बात है।
जैतून

6
मैं कोशिश करता हूं और अपने for (var i=0;सभी छोरों में आदत
रखता

2
क्रॉकफोर्ड varसमारोह के शीर्ष पर रखना पसंद करता है, क्योंकि यह आपको चर के दायरे के आकार के बारे में धोखा नहीं देता है। js2-modeयदि आप एक ही फ़ंक्शन var iमें दो अलग-अलग forछोरों में शिकायत करेंगे , क्योंकि यह आपको सुझाव देता है कि आपके पास दो अलग-अलग चर हैं, और आप नहीं करते हैं। फिर भी, मैं उन varचीजों से कभी भी अलग होने की कोशिश नहीं करता, जहां से मैं उनकी शुरुआत करता हूं।
क्रैगन जेवियर सीटेकर

मुझे परवाह नहीं है अगर यह स्कूप नहीं है। मैं इसका इस्तेमाल करने से पहले 20 लाइनों की घोषित एक चर नहीं कर सकता
जुआन मेंडेस


8

यह जानने के लिए कि जावास्क्रिप्ट को मूल रूप से लाइवस्क्रिप्ट कहा जाता था और मार्केटिंग उद्देश्यों के लिए 'जावा' उपसर्ग संलग्न था, क्योंकि जावा और जावास्क्रिप्ट संबंधित नहीं हैं (जो वे नहीं हैं)।

ओह और डेविड फ्लानगन के 'जावास्क्रिप्ट: द डेफिनिटिव गाइड' के किसी भी संस्करण के मालिक के लिए (यह जानकारी पेज 2 पर है)।

... और उन लोगों की सराहना करने के लिए जो इंटरनेट एक्सप्लोरर 4 के डॉक्यूमेंट को स्थगित करने की कोशिश में पहले गए हैं। [] और नेटस्केप नेविगेटर 4 के डॉक्यूमेंट.लेयर्स [] इससे पहले कि जेक्वेरी ने दर्द को दूर कर लिया।

संपादित करें:

जैसा कि @Kinopiko बताते हैं कि जावास्क्रिप्ट को प्रोजेक्ट मोचा कहा जाता था ( कुछ स्रोत यह भी कहते हैं कि इसे प्रोजेक्ट लाइववायर कहा गया था), लेकिन आमतौर पर यह स्वीकार किया जाता है कि भाषा (ब्रेंडन ईच द्वारा लिखित) को जावा प्रीफ़िक्स को अपनाने से पहले लाइवस्क्रिप्ट के रूप में जारी किया गया था। 1996 की शुरुआत में रिलीज़ हुई।


डगलस क्रॉकफोर्ड से टाइट बिट्स लेने के लिए +1!
गत

1
मैंने सोचा कि जावास्क्रिप्ट को मूल रूप से मोचा कहा जाता था?

1
@Kinopiko मेरे 'जावास्क्रिप्ट: द डेफिनिटिव गाइड' 3ed (जून 1998) की पुस्तक के अनुसार डेविड फ्लानघन ने इसे लाइवस्क्रिप्ट कहा।
अमेल्विन

@ एक दिन जब आप कुछ सीखते हैं तो एक अच्छा दिन होता है!
अमेल्विन

1
@amelvin हर दिन एक स्कूल दिवस होता है।
कर्नल स्पॉन्ज

8

"I Know JavaScript" कहने के लिए निम्नलिखित के बारे में पता होना चाहिए:

  1. जावास्क्रिप्ट अच्छा है लेकिन DOM दर्द बिंदु है
  2. क्रॉस ब्राउज़र के मुद्दे आपको पागल कर सकते हैं
  3. जब तक कोड पर कम से कम 4 अलग-अलग अच्छे ब्राउज़रों का परीक्षण नहीं किया जाता है, तब तक आप इसके बग को मुक्त नहीं कह सकते
  4. बंद करना .............. पता होना चाहिए
  5. इसका प्रोटोटाइप आधारित ........... यह जानने के लिए इसका मज़ा बहुत अच्छा है
  6. डिबगर कीवर्ड ..... संकट में मदद करता है

अच्छी सूची, बहुत पतली। मुझे "4" अच्छे ब्राउज़रों पर हंसी आई। :) मुझे लगता है कि संख्या 7 को संस्करण 8 के तहत IE ब्राउज़रों के लिए एक स्वस्थ घृणा होनी चाहिए
श्याम

@ क्यों, आपको लगता है कि हमें IE8 से स्वस्थ घृणा नहीं करनी चाहिए? मैं अभी भी IE8 में मुद्दों ... मुद्दों है कि केवल IE8 में उस पर हैं।
ट्रैकर 1

@ Tracker1: हमेशा मुद्दे होंगे। और एक ब्राउज़र को कोसने से मैंने छुआ नहीं है, ठीक है, यह थोड़ा अनुचित होगा। इसलिए मैंने 4 अच्छे ब्राउज़रों को हँसाया: 'फ़ायरफ़ॉक्स, क्रोम, सफारी और ओपेरा' वे ही हैं जिनके लिए मैं विकसित हुआ हूं। मैंने IE के लिए हैकिंग बंद कर दी है, मैं सिर्फ फिशर प्राइस कोड चलाता हूं, जैसे कि जावास्क्रिप्ट को अक्षम किया जाएगा।
श्याम

7

वह जावास्क्रिप्ट अन्य भाषाओं की तुलना में बहुत अलग है जितना आप सोच सकते हैं। इंप्रेशन पाने के लिए इस महान Google टेक टॉक को देखें : http://www.youtube.com/watch?v=hQVTIJBZook


1
+1 यह जावास्क्रिप्ट चूसने को रोकने का एक शानदार विवरण है। ये बाद में देखने लायक हैं: yuiblog.com/crockford
कर्नल स्पॉन्ज

एक और अच्छी क्रॉकफोड प्रस्तुति ("द जावास्क्रिप्ट प्रोग्रामिंग लैंग्वेज" 4 भाग) वीडियो

7

प्रत्येक जावास्क्रिप्ट कोडर को क्या जानना चाहिए?

कैसे के बारे में, मैं 2 क्लिक के साथ आपके प्रयासों को बंद कर सकता हूं। इसलिए यदि संभव हो तो एक वापसी प्रदान करें।


आप अपने वेब ब्राउज़र की स्थापना रद्द कर सकते हैं। बहुत कम लोग हैं जो इन दिनों जावास्क्रिप्ट अक्षम करते हैं। जिन्हें शायद वेब ब्राउज़ करने की आवश्यकता नहीं है। इसका एकमात्र अपवाद यह है कि वेब क्रॉलर को आपकी सार्वजनिक सामग्री तक पहुंचने की आवश्यकता है और ऐसा करने के लिए जेएस पर भरोसा नहीं कर सकते।
जीन विंसेंट

मुझे गैर-जेएस तरीकों को प्रदान करने में अधिक दिलचस्पी है। मुझे ऐसे लोगों के बारे में पता है जो JS विकलांगों के साथ ब्राउज़ करते हैं, या स्क्रीन रीडर का उपयोग करते हैं। वे हमेशा जेएस के साथ अच्छा नहीं खेलते हैं। मैंने ऐसी साइटें देखी हैं जो एक सरल लॉगिन पेज अजाक्स के माध्यम से प्रस्तुत की जाती हैं, जिसमें कोई भी गिरावट नहीं होती है। कोई जेएस, कोई लॉगिन नहीं। साइट बहुत जेएस का उपयोग भी नहीं करता है, बस फॉर्म जमा करने के लिए।
खिनिस्तार

मेरा मानना ​​है कि जो उपयोगकर्ता जानबूझकर जेएस को निष्क्रिय कर देते हैं, वे आज बहुत ही असामान्य हैं, निश्चित रूप से 10 साल पहले की तुलना में बहुत कम। यही कारण है कि मुझे समझ में नहीं आता है कि हमें उन लोगों के लिए दो बार एक साइट क्यों डिज़ाइन करनी चाहिए जो वास्तव में वैसे भी आपकी साइट पर नहीं आना चाहते हैं। तो आपके उदाहरण में, वे लॉगिन नहीं कर सकते, तो क्या? दूसरी बात यह है कि जेएस के बिना आधुनिक साइट डिजाइन करने का कोई तरीका नहीं है।
जीन विंसेंट


6

आप जावास्क्रिप्ट को जानते हैं यदि आप ऐरे, नंबर, स्ट्रिंग, दिनांक और ऑब्जेक्ट का प्रभावी ढंग से उपयोग कर सकते हैं। गणित और RegExp के लिए प्लस अंक। आपको फ़ंक्शंस लिखने और वेरिएबल्स का उपयोग करने में सक्षम होना चाहिए (सही दायरे में, यानी किसी ऑब्जेक्ट के 'तरीके' के रूप में)।

मैं क्लोजर जानने के बारे में कुछ टिप्पणियां देखता हूं, असाधारण फ़ंक्शन सिंटैक्स, ब्लाब्ला। यह सब इस सवाल के लिए काफी अप्रासंगिक है। अगर आप 100 मीटर डैश को 11 सेकंड के अंदर चला सकते हैं, तो यह कहना कि आप एक धावक हैं।

मैं कहता हूं कि जावास्क्रिप्ट में कुशल बनने में शायद कुछ हफ़्ते लगेंगे। उसके बाद एक विशेषज्ञ, एक निंजा आदि बनने के लिए वर्षों और दर्जनों पुस्तकों और हजारों लाइनों की प्रोग्रामिंग होती है।

लेकिन यह सवाल नहीं था।

ओह, और DOM जावास्क्रिप्ट का हिस्सा नहीं है, और न ही jQuery है। इसलिए मुझे लगता है कि दोनों ही सवाल के लिए समान रूप से अप्रासंगिक हैं।


1
बंद वहाँ है कि आप इसकी परवाह करते हैं या नहीं। यह शक्तिशाली है लेकिन आसानी से दुरुपयोग किया जा सकता है। यदि आप यह नहीं जानते कि यह कैसे काम करता है तो आप भाषा नहीं जानते
gblazex

नुकसान के अलावा बंद होने का कारण हो सकता है, जैसे मेमोरी लीक, विशेष रूप से हमारे सच्चे दोस्त Internet Explorer 6.
Marcel Korpel


4

उपरोक्त सभी पढ़ने के बाद , jQuery जैसे ढांचे का उपयोग करके जावास्क्रिप्ट सीखना पूरी तरह से ठीक है। सच्चाई यह है कि बहुत से लोगों ने जेएस को पहले स्थान पर उठाया। इसमें कोई शर्म की बात नहीं है।


4

सरणीlengthविधि सरणी की वस्तुओं की गिनती नहीं है, लेकिन उच्चतम सूचकांक है। जब आइटम सेट किया गया थाundefined

var a = [];
a.length;   // === 0
a[10];      // === undefined
a[10] = undefined;
a.length;   // === 11
a.pop();    // === undefined
a.length;   // === 10

यह व्यवहार एक भाषा डिजाइन बग से अलग है।


3

jQuery मेरी सबसे अच्छी सिफारिश होगी। केवल कोड के लिए ही नहीं, यह मुहावरा है, शैली है, इसके पीछे की सोच सबसे अधिक अनुकरण के योग्य है।


2
+1 jquery ने जावास्क्रिप्ट के मेरे उपयोग में क्रांति ला दी है।
अमेल्विन

1
अच्छा तर्क रूपरेखा। विस्तार से यह एक महान जवाब होगा।
डोनल फैलो

jQuery आपको एक प्रक्रियात्मक मोड में लाता है। मैं बहुत ज्यादा OO JS लिखता हूँ
Juan Mendes

ऑब्जेक्ट-ओरिएंटेशन के बारे में कुछ भी जादुई नहीं है। मैं बल्कि जॉन रेजिग द्वारा डिज़ाइन किया गया फ्रेमवर्क का उपयोग करता हूं और हजारों डेवलपर्स द्वारा उपयोग किया जाता है, जो कि आप या मैं लिखूंगा।
duffymo

3

यह जावास्क्रिप्ट दुनिया में सबसे व्यापक रूप से तैनात भाषा है। (शायद)


8
सबसे व्यापक रूप से तैनात देशी प्राकृतिक भाषा मंदारिन है। जानना होगा कि आप एक मंदारिन वक्ता बनाते हैं? क्या उस तथ्य को जानना भी भाषा के आपकी समझ से कोई लेना-देना है?
ज़ेनो

11
दुनिया में सबसे व्यापक रूप से तैनात भाषा डीएनए का आनुवंशिक कोड है जो कोशिकाओं के भीतर प्रोटीन संश्लेषण को नियंत्रित करता है।
अर्नेल्ली

मंदारिन और डीएनए से पहले, लव की भाषा को पहले तैनात किया जाना चाहिए: इस प्रकार, यह जीतता है। BAM!
क्रिस्टोफर

3

किसी भाषा को वास्तव में अच्छी तरह से सीखना और उसके विभिन्न प्रश्नों को समझना (वर्षों के) अनुभव से आता है। यदि आप एक बेहतर प्रोग्रामर बनना चाहते हैं, तो मैं कहूंगा कि डिजाइन पैटर्न को समझना, उन्हें कैसे और कब उपयोग करना है और / या यहां तक ​​कि जब आप उन्हें साकार किए बिना उपयोग कर रहे हैं; तकनीकी वास्तुकला और उपयोगकर्ता अनुभव।

जावास्क्रिप्ट (जावास्क्रिप्ट) भाषा को जानने का मतलब है कि आप किसी भी ढांचे को चुन सकते हैं और उसका उपयोग कर सकते हैं। आपको अनिवार्य रूप से स्रोत कोड में गोता लगाने की आवश्यकता होगी, और यदि आप सभी जानते हैं कि सिंटैक्स एक फ्रेमवर्क या 2 या 3 है, तो आप बहुत दूर नहीं जाएंगे। यह कहते हुए कि, कुछ अलग चौखटों के स्रोत कोड में जाना शायद सबसे अच्छे तरीकों में से एक है कि कैसे जावास्क्रिप्ट का उपयोग किया जा सकता है। फायरबग या वेब इंस्पेक्टर में कोड के माध्यम से कदम रखने के बारे में संदेश देना, फिर जावास्क्रिप्ट दस्तावेज़ीकरण, विशेष रूप से मोज़िला और वेबकिट डॉक्स की जांच करना, ताकि आप जो देख रहे हैं, उसकी अधिक समझ प्राप्त कर सकें।

ऑब्जेक्ट-ओरिएंटेड और फंक्शनल प्रोग्रामिंग के बीच अंतर को समझना, कि जावास्क्रिप्ट दो का एक सेक्सी मिश्रण है और जब और कैसे और दोनों का उपयोग करने के लिए एक हत्यारा कोडबेस और भयानक अनुप्रयोग बनाने के लिए आपको एक बेहतर जावास्क्रिप्ट प्रोग्रामर बना देगा।

बस कुछ पुस्तकों को पढ़ना, विशेष रूप से क्रॉकफोर्ड के "अच्छे हिस्से" जो केवल जावास्क्रिप्ट में अच्छे होने के बारे में अपनी राय प्रस्तुत करते हैं, जबकि जावास्क्रिप्ट के अधिकांश भागों को छोड़ना आपको गलत पैर पर ले जाने वाला है।

दूसरी ओर थॉमस फुक्स जैसे किसी व्यक्ति द्वारा लिखे गए कोड की जांच करना आपको अद्भुत और कुशल जावास्क्रिप्ट लिखने की शक्ति में बहुत अधिक जानकारी देने जा रहा है।

कुछ गोचरों या डब्ल्यूटीएफ को याद करने की कोशिश करने से बहुत मदद नहीं मिलने वाली है, अगर आप एक पुस्तकालय / चौखटे के कोड के माध्यम से कोडिंग और कदम बढ़ाना शुरू कर देंगे, तो विशेष रूप से एक मददगार टिप्पणी, यह देखने के लिए कि वे कुछ खास क्यों इस्तेमाल किए गए हैं? गुण / मान और दूसरों के लिए क्यों और कब विशिष्ट ऑपरेशंस और ऑपरेटरों का उपयोग करना अच्छा है, यह फ्रेमवर्क के लोगों के उपयोग के कोड में है। उदाहरण से सीखना कितना बेहतर है? : ^)


क्रॉकफोर्ड की पूजा नहीं करने के लिए +1। मैं उनके विचारों को मानता हूँ जैसे मैं चर्च में प्रचारक करता हूँ। मैं उनका सम्मान करता हूं जो वे कहते हैं लेकिन नमक के दाने के साथ यह सब लेते हैं।
जुआन मेंडेस

2

जावास्क्रिप्ट में, प्रदर्शन मायने रखता है।

अपने कोड को ऑप्टिमाइज़ करने के लिए कोई बुद्धिमान कंपाइलर नहीं है इसलिए आपको C #, जावा जैसी भाषाओं की तुलना में जावास्क्रिप्ट कोड लिखते समय अधिक सावधान रहना चाहिए ...


1
वास्तव में ब्राउज़र कोड आपके कोड को अनुकूलित करने में बहुत अच्छे हैं।
एडुआर्डो

1
Chrome आपके कोड को अनुकूलित करने में बहुत स्मार्ट है, यह उत्तर सभी नए JS इंजनों के साथ सही नहीं है
जुआन मेंडेस

IE, मोबाइल ब्राउज़र के बारे में क्या?
केलंटास

1

वस्तु शाब्दिक क्योंकि वे लिखने के लिए बहुत अच्छे हैं।


0

निम्नलिखित बातें भी महत्वपूर्ण हैं:

1) परिवर्तनीय उत्थापन। 2) स्कोप चेन और एक्टिवेशन ऑब्जेक्ट।

और फिर इन चीजों की तरह: :)

3) wtfjs.com

4) सब कुछ एक वस्तु है http://www.lifeinafolder.com/images/Js.jpg


6
3.) गलत है । सब कुछ एक वस्तु नहीं है। stackoverflow.com/questions/3907613/…
gblazex

0
  1. यह जानते हुए भी कि with()रेखा के साथ और उसके बिना एक जीवन है और कहाँ है।
  2. आप throwजावास्क्रिप्ट रनटाइम को जानबूझकर रोकने के कथन के साथ कस्टम त्रुटियां बना सकते हैं ।

-1

जावास्क्रिप्ट निम्नलिखित कोड की तरह न्यूलाइन वर्ण के साथ रिटर्न कीवर्ड और रिटर्न स्टेटमेंट को अलग करने का समर्थन नहीं करता है (या मेरे jsField पेज पर इसे आज़माएं )

function foo()
{
    return
    {
        bar: 'something'
    };
}

$(function()
{
    document.write(foo());
});

मुझे समझ नहीं आता कि जावास्क्रिप्ट इस शैली का समर्थन क्यों नहीं करता क्योंकि जावास्क्रिप्ट की डिफ़ॉल्ट शैली के साथ तुलना करने पर बहुत जटिल जावास्क्रिप्ट स्रोत कोड को पढ़ना बहुत आसान है।

पुनश्च। मैंने लगभग 6 साल जावास्क्रिप्ट लिखा है। लेकिन मैं इस बग को खुद के साथ मिला जब मैं निम्नलिखित फ़ंक्शन को निष्पादित करने का प्रयास करता हूं। यह हमेशा अनिर्धारित रहता है। जब मैं डिबगर का उपयोग करता हूं और इस फ़ंक्शन में कदम रखता हूं तो सब कुछ ठीक होता है। मुझे लगता है कि यह मेरे जीवन का सबसे खराब प्रोग्रामिंग बग होना चाहिए।

function JqGridInlineEditor_GenerateTool(cellvalue, options, rowObject, disableEdit, disableDelete)
{
    return 
        (!disableEdit ? '<a class="button edit" href="javascript: void(0);" onclick="JqGridInlineEditor_EditRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Edit.gif'), 'Click here to Edit or \nDouble-click row to edit.') : '') +
        (!disableDelete ? '<a class="button delete" href="javascript: void(0);" onclick="JqGridInlineEditor_DeleteRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Delete.png'), 'Click here to Delete or \nSelect row and then press Delete') : '') +
        (!disableEdit ? '<a class="button save" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_SaveRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Save.png'), 'Click here to Save or \nPress Enter') : '') +
        (!disableEdit ? '<a class="button cancel" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_RestoreRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Cancel.png'), 'Click here to Cancel or \nPress Esc') : '');
}

3
जावास्क्रिप्ट में, newline वर्ण आमतौर पर बयानों के विभाजक के रूप में कार्य करते हैं; केवल जब यह असंभव है एक बयान समाप्त हो गया है (उदाहरण के लिए var foo = "bar" +), पार्सर पर पढ़ता है।
मार्सेल कोर्पेल

एक और jsFiddle। jsfiddle.net/Soul_Master/BxrDJ
Soul_Master

2
@ मार्सेल - यह बिल्कुल सच नहीं है; उदाहरण के लिए, दो पंक्तियों var foo = 5और -1;परिणामस्वरूप फू को 4 पर सेट किया जाएगा, भले ही प्रत्येक अपने आप में मान्य कथन हो।
बेन ब्लैंक

4
ऐसा इसलिए है क्योंकि भाषा अर्धविरामों को अलग-अलग बयानों के लिए स्वचालित रूप से इंजेक्शन देती है। यह भाषा के साथ एक गोत्र है। आपका रिटर्न स्टेटमेंट इस में परिवर्तित हो जाता है: रिटर्न; {key: value,} इस समस्या से बचने के लिए, आपको सेमीकोलन को एक ही पंक्ति में रखने की प्रथा को अपनाना चाहिए, जैसे: वापसी {key: value}; इसके अलावा, अपने आप को एक एहसान करो और डगलस क्रॉकफोर्ड: द गुड पार्ट्स की एक प्रति पकड़ो। इसका उल्लेख पुस्तक में स्पष्ट रूप से किया गया है।
रजत

@ बान - दिलचस्प मामला, उस ओर इशारा करने के लिए धन्यवाद। उस ने कहा, मैं इन एज मामलों पर भरोसा नहीं करने की सलाह देता हूं और बस एक अर्धविराम के साथ समाप्त होने वाली एक लाइन पर सब कुछ डाल देता हूं और केवल अपना कोड कई लाइनों पर डाल देता हूं जब एक पंक्ति किसी बयान या अभिव्यक्ति के साथ समाप्त हो रही होती है तो बस समाप्त नहीं हो सकती है ।
मार्सेल कोर्पेल

-3

चूंकि JS एक कार्यात्मक भाषा है, एक सभ्य JS प्रोग्रामर को Y- कॉम्बीनेटर लिखने और यह समझाने में सक्षम होना चाहिए कि यह शीर्ष के शीर्ष पर कैसे काम करता है।


1
वाई-कॉम्बिनेटर के लिखने में सक्षम होने में क्या गलत है? और हाँ जावास्क्रिप्ट एक कार्यात्मक भाषा है। यदि आप कहना चाहते हैं कि "जानिए जावास्क्रिप्ट" तो कार्यात्मक प्रोग्रामिंग की अच्छी समझ है।
रेयनोस

C को एक कार्यात्मक भाषा के रूप में भी इस्तेमाल किया जा सकता है।
kzh

मैंने हाल ही में वाई कॉम्बिनेटर के बारे में पढ़ा है, यह समझता हूं कि यह कैसे काम करता है और किन मामलों में इसका इस्तेमाल किया जा सकता है .. लेकिन कभी ऐसा उदाहरण नहीं मिला जहां मैं वाई कॉम्बीनेटर की जरूरत न होने की समस्या को फिर से लिख सकता हूं।
एवर्ट

-5

... Google वेब टूलकिट के बारे में , जिसका अर्थ है कि आपके जावास्क्रिप्ट प्रोजेक्ट को शायद अधिक संयमित तरीके से विकसित किया जा सकता है।


2
GWT वास्तव में जावास्क्रिप्ट नहीं है, यह जावास्क्रिप्ट लिखने का जावािश तरीका है।
लिविंगस्टन सैमुअल

... और हर जाव्सिप्ट प्रोग्रामर को इसके बारे में जानना चाहिए।
विक्टर सेहर

कि आपकी जावास्क्रिप्ट परियोजना शायद बहुत अधिक सुविधाजनक तरीके से विकसित की जा सकती है।
विक्टर सेहर

6
मुझे लगता है कि जावास्क्रिप्ट को व्यक्तिगत रूप से जावा से निपटना आसान है।
टिमवैलमेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.