Skip to content

UdayaKrishnanM/33-js-concepts

 
 

Repository files navigation


ஒவ்வொரு JS டெவலப்பரும் தெரிந்திருக்க வேண்டிய 33 கருத்துகள்

ஒவ்வொரு JavaScript உருவாக்குநருக்கும் தெரிந்திருக்க வேண்டிய 33 கருத்துக்கள்

இந்த களஞ்சியம் (repository) JavaScript-இல் உள்ள கருத்துகளை ஆழமாக கற்றுக் கொள்வதற்கு உருவாக்குநர்களுக்கு உதவும் பொருட்டு உருவாக்கப்பட்டது. இது கட்டாயம் அல்ல; எதிர்காலக் கற்றலுக்கு வழிகாட்டியாகும். இதன் அடிப்படை Stephen Curtis எழுதிய ஒரு கட்டுரையாகும்; அதை நீங்கள் இங்கே படிக்கலாம்.

உங்களின் சுருக்கங்கள் அல்லது மதிப்பீடுகளுக்கான இணைப்புகளைச் சேர்த்து PR சமர்ப்பிக்கத் தயங்க வேண்டாம். இந்த களஞ்சியத்தை உங்கள் தாய்மொழியில் மொழிமாற்றம் செய்ய விரும்பினால், அதையும் மகிழ்ச்சியுடன் செய்யலாம்.

இந்த களஞ்சியத்தின் அனைத்து மொழிபெயர்ப்புகளும் கீழே பட்டியலிடப்பட்டுள்ளன:


  1. கால் ஸ்டாக் (Call Stack)
  2. அடிப்படை வகைகள் (Primitive Types)
  3. மதிப்பு வகைகள் மற்றும் குறிப்பு (Reference) வகைகள்
  4. உள்ளார்ந்த, வெளிப்படையான, பெயரடைவியல், வடிவமைப்பு மற்றும் டக் டைப்பிங்
  5. == vs === vs typeof
  6. செயல் பகுதி, தொகுப்பு பகுதி மற்றும் லெக்சிக்கல் பகுதி
  7. எக்ஸ்பிரஷன் vs ஸ்டேட்மென்ட்
  8. IIFE, தொகுதிகள் (Modules) மற்றும் நேம்ஸ்பேஸ்கள்
  9. செயல்தி வரிசை (Message Queue) மற்றும் இவன்்ட் லூப்
  10. setTimeout, setInterval மற்றும் requestAnimationFrame
  11. JavaScript எஞ்சின்கள்
  12. பிட்வைஸ் ஆப்பரேட்டர்கள், Typed Arrays மற்றும் Array Buffers
  13. DOM மற்றும் லேஅவுட் ட்ரீஸ்
  14. ஃபெக்டரிகள் மற்றும் வகுப்புகள் (Classes)
  15. this, call, apply மற்றும் bind
  16. new, Constructor, instanceof மற்றும் Instances
  17. புரோட்டோடைப் மரபுரிமை மற்றும் புரோட்டோடைப் சங்கிலி
  18. Object.create மற்றும் Object.assign
  19. map, reduce, filter
  20. தூய செயல்கள், பக்க விளைவுகள், நிலை மாற்றம் மற்றும் நிகழ்வு பரவல்
  21. க்ளோஷர்கள் (Closures)
  22. உயர்-ஒழுங்கு செயல்கள் (Higher Order Functions)
  23. மறைமுறை (Recursion)
  24. கலெக்ஷன்கள் மற்றும் ஜெனரேட்டர்கள்
  25. Promises
  26. async/await
  27. தரவு அமைப்புகள் (Data Structures)
  28. செலவான செயல்பாடு மற்றும் Big O குறியீடு
  29. அல்காரிதங்கள்
  30. மரபுரிமை, பலரூபம் (Polymorphism) மற்றும் குறியீடு மீள்பயன்பாடு
  31. வடிவமைப்பு மாதிரிகள் (Design Patterns)
  32. பாஷியல் அப்ளிகேஷன்கள், கரியிங், காம்போஸ் மற்றும் பயிப்
  33. சுத்தமான குறியீடு (Clean Code)

கால் ஸ்டாக் என்பது ஒரு நிரலில் செயல்களின் இயக்கத்தை கண்காணிக்க JavaScript மொழிபெயர்ப்பான் பயன்படுத்தும் செயல்முறை. JavaScript-இல், செயல்கள் அழைக்கப்பட்ட வரிசையில் இயக்கப்படுகின்றன. கால் ஸ்டாக் LIFO (Last In, First Out) கொள்கையை பின்பற்றுகிறது; அதாவது ஸ்டாக்கில் கடைசியாக இடப்பட்ட செயலே முதலில் இயக்கப்படும்.

ECMAScript விவரக்குறிப்பின்படி, கால் ஸ்டாக் இயக்க சூழலின் (execution context) ஒரு பகுதியாக வரையறுக்கப்படுகிறது. ஒரு செயலைக் கூப்பிடும் போது, புதிய இயக்க சூழல் உருவாகி ஸ்டாக்கின் மேல் சேர்க்கப்படும். செயல் முடிந்தவுடன், அதன் இயக்க சூழல் ஸ்டாக்கில் இருந்து நீக்கப்பட்டு, கட்டுப்பாடு முந்தைய சூழலுக்குத் திரும்பும். இது ஒத்திசைவு (synchronous) குறியீட்டு இயக்கத்தை மேலாண்மை செய்ய உதவுகிறது; ஒவ்வொரு செயலின் அழைப்பும் முடிவடைய வேண்டும்; அதன் பிறகே அடுத்தது தொடங்க முடியும்.

குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, JavaScript-இல் ஆறு அடிப்படை தரவு வகைகள் உள்ளன: string, number, bigint, boolean, undefined மற்றும் symbol. இவை மாற்றமுடியாதவை (immutable); அதாவது அவற்றின் மதிப்புகளை மாற்ற முடியாது. மேலும் null என்ற ஒரு விசேஷமான அடிப்படை வகையும் உள்ளது; இது எந்த பொருள் மதிப்பும் இல்லாததைக் குறிக்கிறது.

அடிப்படை மதிப்புகள் நேரடியாக மாறியில் ஒதுக்கப்படுகின்றன; மேலும் நீங்கள் ஒரு அடிப்படை வகையை மாற்றும் போது, நீங்கள் நேரடியாக மதிப்பின் மேல் வேலை செய்கிறீர்கள். பொருட்களுடன் (objects) மாறாக, அடிப்படைகளுக்கு சொத்துக்கள் அல்லது முறைமைகள் கிடையாது; இருப்பினும் தேவையானபோது JavaScript தானாகவே அவற்றை பொருள் இணையாக (wrapper objects) கையாளுகிறது (உதா., strings மீது முறைமைகள் அழைக்கும் போது).

குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, மதிப்பு வகைகள் (value types) மாறி அணையும் இடத்திலேயே நேரடியாக சேமிக்கப்படுகின்றன. இதில் number, string, boolean, undefined, bigint, symbol மற்றும் null போன்றவை அடங்கும். ஒரு மதிப்பு வகையை மாறிக்கு ஒதுக்கும்போது, மதிப்பே சேமிக்கப்படும்.

மாறாக, குறிப்பு (reference) வகைகள் என்பது heap-இல் சேமிக்கப்படும் பொருட்கள். இத்தகைய மதிப்புகளுக்கான மாறிகளில், பொருட்கள் தாமே அல்ல; அவற்றுக்கான குறிப்பு (pointer) மட்டுமே சேமிக்கப்படும். ஒரு குறிப்பு வகையை இன்னொரு மாறிக்குத் ஒதுக்கும்போது, இரு மாறிகளும் நினைவகத்தில் அதே பொருளை குறிப்பது காரணமாக பகிரப்படும்.

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, JavaScript ஒரு இயங்குகால வகைப் பரிசோதனையுடைய (dynamically typed) மொழி; அதாவது வகைகள் மாறிகளுடன் அல்ல, மதிப்புகளுடன் தொடர்புடையவை; மேலும் வகை சரிபார்ப்பு இயங்கும் பொழுதே நடைபெறும்.

உள்ளார்ந்த வகைமாற்றம் (Implicit Typing/Type Coercion): தேவையானபோது JavaScript தானாகவே ஒரு தரவுவகையை மாற்றுவது. உதாரணமாக, கணிதச் செயல்பாட்டின் போது ஒரு string-ஐ number-ஆக மாற்றலாம். இது சில நேரங்களில் எளிமையாக்கினாலும், சரியாக கையாளாவிட்டால் எதிர்பாராத விளைவுகளுக்கு வழிவகுக்கும்.

வெளிப்படையான வகைமாற்றம் (Explicit Typing): Number(), String(), Boolean() போன்ற செயல்களைப் பயன்படுத்தி ஒரு மதிப்பைத் தெளிவாக மற்றொரு வகைக்கு மாற்றுவது.

பெயரடைவியல் (Nominal) Typing: JavaScript-இல் இதற்கு உள்ளமைவு ஆதரவு இல்லை; ஆனால் TypeScript போன்ற மொழிகள் இதை வழங்கி, வளர்ச்சிக்குள் வகை பிழைகளை முன்கூட்டியே கண்டறிய உதவுகின்றன.

கட்டமைப்பு (Structural) Typing: ஒரு பொருளின் அமைப்பு/சொத்துகள் அடிப்படையில் வகைகள் பொருந்துவது. JavaScript கட்டமைப்பு-ஆதாரமானது; அதனால் ஒரே சொத்துகள்/முறைமைகள் உள்ள பொருட்கள் ஒருவருக்கொருவர் பொருந்துமாகக் கருதப்படுகின்றன.

டக் டைப்பிங் (Duck Typing): ஒரு பொருளின் அறிவிக்கப்பட்ட வகையை விட, அதில் வேண்டிய சொத்துகள்/முறைமைகள் உள்ளனவா என்பதையே பார்ப்பது. JavaScript இதன்மேல் மிகுந்த அளவில் நம்புகிறது.

கட்டுரைகள்

video வீடியோக்கள்

புத்தகங்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, JavaScript-இல் கடுமையான (===) மற்றும் தளர்வான (==) சமநிலை ஒப்பீட்டு ஆப்பரேட்டர்கள் உள்ளன; இவை மதிப்புகளை ஒப்பிடும் முறையில் வேறுபடுகின்றன. சுருக்கமாக:

  • == (தளர்வான சமநிலை): ஒப்பிடுவதற்கு முன் வகைமாற்றம் (type coercion) செய்கிறது. மதிப்புகள் வேறு வகைகளாக இருந்தால், பொதுவான ஒரே வகைக்கு மாற்றி ஒப்பிடும்; இது சில சமயம் எதிர்பாராத விளைவுகளைக் கொடுக்கலாம்.

  • === (கடுமையான சமநிலை): வகைமாற்றம் செய்யாது; மதிப்பு மற்றும் வகை இரண்டையும் ஒன்றாகவே இருக்க வேண்டும்.

  • typeof ஆப்பரேட்டர்: ஒரு மாறியின் தரவுவகையை அறிய பயன்படும். சில விசித்திரங்கள் உள்ளன; உதாரணமாக typeof null "object" எனத் திரும்பும் — இது JavaScript செயலாக்கத்தில் நீண்டகால பழக்கவழக்கமாக உள்ளது.

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, மூன்று முக்கியமான ஸ్கோப் வகைகளை விவரிக்கிறது:

  • செயல்-பரப்பு (Function Scope): var கொண்டு ஒரு செயலில் அறிவிக்கப்பட்ட மாறிகள் அந்தச் செயலில் மட்டும் அணுகக்கூடியவை.

  • தொகுப்பு-பரப்பு (Block Scope): ES6-இல் அறிமுகமான let மற்றும் const மாறிகள் {} தொகுப்பின் உள்ளேயே செல்லுந்தவையாகும் (loops/conditionals போன்றவை).

  • லெக்சிக்கல் பரப்பு (Lexical Scope): குறியீட்டில் மாறிகள் அமைந்துள்ள இடத்தை அடிப்படையாகக் கொண்டு அணுகல் தீர்மானிக்கப்படுகிறது. செயல்கள் தங்கள் பெற்றோர்-ஸ்கோப்பில் உள்ள மாறிகளை அணுக முடியும்.

புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ECMAScript விவரக்குறிப்பின்படி, expressions ஒரு மதிப்பை உற்பத்தி செய்கின்றன; statements என்பது ஒரு செயலைக் (உதா., மாறி ஒதுக்கல், கட்டுப்பாட்டு ஓட்டம்) செய்யும் உத்தரவு. Function declarations மேல் ஏற்றம் (hoisting) செய்யப்படுகின்றன; ஆகவே அறிவிப்பதற்கு முன்பே அழைக்கலாம்; ஆனால் function expressions முன்பே வரையறுக்கப்பட்டிருக்க வேண்டும்.

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


ES6 modules அறிமுகமானதால், ஸ்கோப்பை தனிமைப்படுத்தும் பணியில் IIFEs-இன் பங்கு குறைந்தாலும், அவை இன்னும் சில சூழல்களில் பயனுள்ளதாக உள்ளன.

குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


Event Loop என்பது JavaScript-இன் ஒன்றுகூடல் (concurrency) மாதிரியின் ஒரு முக்கிய அங்கம்; இது பணிகளை அசிந்க்ரோனஸ் முறையில் செயலாக்குவதன் மூலம் தடை இல்லாத (non-blocking) நடத்தையை உறுதிசெய்கிறது. Message Queue மற்றும் Microtasks ஆகியவற்றுடன் இது எப்படி தொடர்பு கொள்கிறது என்பதைப் புரிந்துகொள்வது JavaScript நடத்தை ஆளுமைக்கு முக்கியம்.

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

புத்தகங்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


குறிப்புகள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


புத்தகங்கள்

கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப


கட்டுரைகள்

video வீடியோக்கள்

⬆ மேலே திரும்ப

இந்த மென்பொருள் MIT உரிமத்தின் கீழ் வழங்கப்படுகிறது. மேலும் விவரங்களுக்கு உரிமம் பார்க்கவும் ©Leonardo Maldonado.

⬆ மேலே திரும்ப


மகிழ்ச்சியான கற்றல்! ⭐

இந்த களஞ்சியம் உங்களுக்கு உதவிகரமாக இருந்தால், தயவுசெய்து ஒரு நட்சத்திரத்தை (star) வழங்குங்கள்!

About

📜 33 JavaScript concepts every developer should know.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%