Skip to content

📜 33 JavaScript concepts every developer should know.

License

Notifications You must be signed in to change notification settings

rampalyadav0001/33-js-concepts

 
 

Repository files navigation


33 Concepts Every JS Developer Should Know

33 Concepts Every JavaScript Developer Should Know

परिचय

इस repository का मकसद JavaScript मैं developers की concepts मस्तर करने में मदद करनी है। ये कोइ जरूरी चीज़ ना है, पर एक guide है future study के लिए। ई Stephen Curtis के एक article पे आधारित है, जिसनें तू यहां पढ़ सकता है

🚀 GitHub ने 2018 के टॉप open source projects मैं गिण्या!

Community

तू भी PR submit कर सके है, link डालन के लिए तेरी खुद की recaps या reviews के। अगर तू repository नै अपनी भाषा मैं translate करना चाहे है, तो कर ले कोई दिक्कत ना ।

सारे translations नीचे लिख्या जाएंगे:


  1. Call Stack
  2. Primitive Types
  3. Value Types and Reference Types
  4. Implicit, Explicit, Nominal, Structuring and Duck Typing
  5. == vs === vs typeof
  6. Function Scope, Block Scope and Lexical Scope
  7. Expression vs Statement
  8. IIFE, Modules and Namespaces
  9. Message Queue and Event Loop
  10. setTimeout, setInterval and requestAnimationFrame
  11. JavaScript Engines
  12. Bitwise Operators, Type Arrays and Array Buffers
  13. DOM and Layout Trees
  14. Factories and Classes
  15. this, call, apply and bind
  16. new, Constructor, instanceof and Instances
  17. Prototype Inheritance and Prototype Chain
  18. Object.create and Object.assign
  19. map, reduce, filter
  20. Pure Functions, Side Effects, State Mutation and Event Propagation
  21. Closures
  22. High Order Functions
  23. Recursion
  24. Collections and Generators
  25. Promises
  26. async/await
  27. Data Structures
  28. Expensive Operation and Big O Notation
  29. Algorithms
  30. Inheritance, Polymorphism and Code Reuse
  31. Design Patterns
  32. Partial Applications, Currying, Compose and Pipe
  33. Clean Code

1. कॉल स्टैक

कॉल स्टैक एक तरीका है जिसनें JavaScript interpreter फंक्शन के execution नै track करन खातर उपयोग करता है। JavaScript मैं, फंक्शन उस क्रम में चलाए जाते हैं जिस क्रम में उननें बुलाया गया। कॉल स्टैक Last In, First Out (LIFO) के सिद्धांत नै फॉलो करता है, मतलब जिब आखिरी फंक्शन स्टैक पे डाला गया वो पहले चलाया जाएगा।

ECMAScript specification के अनुसार, कॉल स्टैक नै execution context का हिस्सा माना जाता है। जिब भी कोई फंक्शन बुलाया जाता है, एक नया execution context बनाया जाता है और वो स्टैक के ऊपर रखा जाता है। जिब फंक्शन पूरा हो जाता है, तौ उसके execution context नै स्टैक तैं हटा दिया जाता है, और control पिछले context मैं लौट जाता है। ई सारा synchronous code execution नै manage करन में मदद करता है, क्यूंकि हर फंक्शन का कॉल पूरा होना जरूरी है उससे पहले की अगला शुरू हो सके।

संदर्भ

लेख

video वीडियो

2. प्राइमिटिव प्रकार

ECMAScript विनिर्देश के अनुसार, JavaScript में छह प्राइमिटिव डेटा प्रकार होते हैं: स्ट्रिंग, नंबर, बिगइंट, बूलियन, अनडिफ़ाइंड, और सिम्बॉल। ये प्रकार अपरिवर्तनीय होते हैं, मतलब इनके मान नहीं बदले जा सकते। एक खास प्राइमिटिव प्रकार भी है जिसे नल कहते हैं, जो किसी ऑब्जेक्ट मान की जानबूझकर अनुपस्थिति को दर्शाता है।

प्राइमिटिव मान सीधे एक चर को सौंपे जाते हैं, और जब आप प्राइमिटिव प्रकार में बदलाव करते हैं, तो आप सीधे मान पर काम कर रहे होते हैं। ऑब्जेक्ट्स के विपरीत, प्राइमिटिव्स में प्रॉपर्टीज या मेथड्स नहीं होते, लेकिन JavaScript आवश्यकतानुसार प्राइमिटिव मानों को ऑब्जेक्ट समकक्षों के साथ स्वतः लपेटता है (जैसे, स्ट्रिंग्स पर मेथड कॉल करते समय)।

संदर्भ

लेख

video वीडियो

⬆ ऊपर लौटें

3. वैल्यू टाइप्स और रेफरेंस टाइप्स

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

लेख

video वीडियो

⬆ ऊपर लौटें


4. इंप्लिसिट, एक्स्प्लिसिट, नॉमिनल, स्ट्रक्चरिंग और डक टाइपिंग

ECMAScript विनिर्देश JavaScript को एक डायनेमिकली टाइप की गई भाषा के रूप में परिभाषित करता है, मतलब टाइप्स मानों के साथ जुड़े होते हैं, न कि वेरिएबल्स के साथ, और टाइप चेकिंग रनटाइम पर होती है। JavaScript टाइप्स को मैनेज करने के कई तरीके हैं:

इंप्लिसिट टाइपिंग (या टाइप कोएर्सन): यह तब होता है जब JavaScript स्वचालित रूप से एक डेटा टाइप को दूसरे में परिवर्तित करता है जब आवश्यक हो। उदाहरण के लिए, JavaScript गणितीय ऑपरेशन के दौरान एक स्ट्रिंग को नंबर में बदल सकता है। जबकि यह कुछ कोड को सरल बना सकता है, यह सावधानी से न संभालने पर अप्रत्याशित परिणामों का कारण भी बन सकता है।

एक्स्प्लिसिट टाइपिंग: इंप्लिसिट टाइपिंग के विपरीत, एक्स्प्लिसिट टाइपिंग में मैन्युअल रूप से एक मान को एक प्रकार से दूसरे प्रकार में परिवर्तित करना शामिल होता है, जैसे कि Number(), String(), या Boolean() जैसी फ़ंक्शंस का उपयोग करके।

नॉमिनल टाइपिंग: JavaScript मूल रूप से नॉमिनल टाइपिंग का समर्थन नहीं करता, जहां प्रकारों की स्पष्ट रूप से घोषणा की जाती है और जांच की जाती है। हालांकि, TypeScript, जो JavaScript का एक सुपरसेट है, इस सुविधा को लाता है ताकि विकास के दौरान टाइप त्रुटियों को पकड़ा जा सके।

स्ट्रक्चरिंग टाइपिंग: इस प्रकार की प्रणाली में, प्रकार डेटा की संरचना या प्रॉपर्टीज़ पर आधारित होते हैं। JavaScript एक स्ट्रक्चरली टाइप की गई भाषा है जहां ऑब्जेक्ट्स संगत होते हैं यदि वे समान संरचना (यानी, समान प्रॉपर्टीज़ और मेथड्स) साझा करते हैं।

डक टाइपिंग: यह एक अवधारणा है जहां किसी ऑब्जेक्ट की उपयुक्तता कुछ प्रॉपर्टीज़ और मेथड्स की उपस्थिति से निर्धारित होती है, न कि ऑब्जेक्ट के वास्तविक प्रकार से। JavaScript डक टाइपिंग पर बहुत निर्भर करता है, जहां व्यवहार को ऑब्जेक्ट की प्रॉपर्टीज़ से निकाला जाता है न कि इसकी घोषित टाइप से।

लेख

video वीडियो

किताबें

5. == बनाम === बनाम typeof

ECMAScript विनिर्देश के अनुसार, JavaScript में सख्त (===) और ढीला (==) समानता ऑपरेटर दोनों शामिल हैं, जो मानों की तुलना करते समय अलग तरीके से व्यवहार करते हैं। यहाँ एक संक्षिप्त विवरण है:

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

=== (सख्त समानता): यह ऑपरेटर बिना किसी टाइप कोएर्सन के मान और टाइप दोनों की तुलना करता है। यदि दो मान एक ही प्रकार के नहीं हैं, तो तुलना फॉल्स लौटाएगी।

typeof ऑपरेटर: typeof ऑपरेटर का उपयोग एक वेरिएबल के डेटा टाइप की जांच करने के लिए किया जाता है। जबकि यह सामान्यतः विश्वसनीय होता है, कुछ अजीब बातें होती हैं, जैसे typeof null "object" लौटाता है न कि "null", जो JavaScript के कार्यान्वयन में एक पुरानी आदत के कारण है।

लेख

video वीडियो

⬆ ऊपर लौटें


6. फंक्शन स्कोप, ब्लॉक स्कोप और लेक्सिकल स्कोप

ECMAScript विनिर्देश तीन मुख्य प्रकार के स्कोप को स्पष्ट करता है:

फंक्शन स्कोप: वेरिएबल जो एक फंक्शन के अंदर var का उपयोग करके घोषित किए जाते हैं, केवल उसी फंक्शन के भीतर एक्सेस किए जा सकते हैं। यह स्कोप वेरिएबल्स को उस फंक्शन से बाहर पहुंचने से रोकता है जहाँ उन्हें घोषित किया गया है।

ब्लॉक स्कोप: ES6 के साथ पेश किए गए, let और const का उपयोग करके घोषित वेरिएबल्स ब्लॉक-स्कोप्ड होते हैं। इसका मतलब है कि वे केवल उस विशेष ब्लॉक {} के भीतर ही एक्सेस किए जा सकते हैं जिसमें वे परिभाषित किए गए हैं, जैसे कि लूप्स या कंडीशनल्स के अंदर।

लेक्सिकल स्कोप: इसका तात्पर्य उस तरीके से है जिस पर वेरिएबल एक्सेस कोड में वेरिएबल्स के भौतिक स्थान के आधार पर निर्धारित होता है। फंक्शन्स लेक्सिकल स्कोप्ड होते हैं, जिसका मतलब है कि वे अपने पैरेंट स्कोप से वेरिएबल्स को एक्सेस कर सकते हैं।

किताबें

लेख

video वीडियो

⬆ ऊपर लौटें


7. एक्सप्रेशन बनाम स्टेटमेंट

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

लेख

वीडियो वीडियो

⬆ ऊपर जाएं


8. IIFE, मॉड्यूल और नामस्थान

ES6 मॉड्यूल के आगमन के साथ, IIFEs की स्कोप आइसोलेशन में भूमिका कम हो गई है, लेकिन वे अब भी प्रासंगिक हैं।

संदर्भ

लेख

वीडियो वीडियो

⬆ ऊपर जाएं



9. संदेश कतार और इवेंट लूप

इवेंट लूप JavaScript के समांतरता मॉडल का एक महत्वपूर्ण हिस्सा है, जो कार्यों को असिंक्रोनस तरीके से प्रोसेस करके नॉन-ब्लॉकिंग व्यवहार सुनिश्चित करता है। यह समझना कि यह संदेश कतार और माइक्रोटास्क के साथ कैसे इंटरैक्ट करता है, JavaScript व्यवहार को मास्टर करने के लिए महत्वपूर्ण है।

लेख

वीडियो वीडियो

⬆ ऊपर जाएं


10. setTimeout, setInterval और requestAnimationFrame

लेख

वीडियो वीडियो

⬆ ऊपर जाएं


11. JavaScript Engines

Articles

video Videos

⬆ Back to Top


12. Bitwise Operators, Type Arrays and Array Buffers

Articles

video Videos

⬆ Back to Top


13. DOM and Layout Trees

Reference

Books

Articles

video Videos

⬆ Back to Top


14. Factories and Classes

Articles

video Videos

⬆ Back to Top

15. this, call, apply and bind

Reference

Articles

video Videos

⬆ Back to Top


16. new, Constructor, instanceof and Instances

Articles

⬆ Back to Top


17. Prototype Inheritance and Prototype Chain

Reference

Articles

video Videos

Books

⬆ Back to Top


18. Object.create and Object.assign

Reference

Articles

video Videos

⬆ Back to Top


19. map, reduce, filter

Articles

video Videos

⬆ Back to Top


20. Pure Functions, Side Effects, State Mutation and Event Propagation

Articles

video Videos

⬆ Back to Top


21. Closures

Reference

Articles

video Videos

⬆ Back to Top


22. High Order Functions

Books

Articles

video Videos

⬆ Back to Top


23. Recursion

Articles

video Videos

⬆ Back to Top


24. Collections and Generators

Reference

Articles

video Videos

⬆ Back to Top


25. Promises

Reference

Articles

video Videos

⬆ Back to Top


26. async/await

Reference

Books

Articles

video Videos

⬆ Back to Top


27. Data Structures

Articles

video Videos

⬆ Back to Top


28. Expensive Operation and Big O Notation

Articles

video Videos

⬆ Back to Top


29. Algorithms

Articles

video Videos

⬆ Back to Top


30. Inheritance, Polymorphism and Code Reuse

Reference

Articles

video Videos

⬆ Back to Top


31. Design Patterns

Books

Articles

video Videos

⬆ Back to Top


32. Partial Applications, Currying, Compose and Pipe

Books

Articles

video Videos

⬆ Back to Top


33. Clean Code

Articles

video Videos

⬆ Back to Top

लाइसेंस

यो सॉफ्टवेयर MIT लाइसेंस के तहत लाइसेंसित है, देखो लाइसेंस तै और जानकारी के लिए। ©लेओनार्डो मल्दोनाडो।

About

📜 33 JavaScript concepts every developer should know.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%