Module 05 — Basic JavaScript & DOM Manipulation (JavaScript Ke Core Concepts)
1. What is it? (Ye Kya Hai?)
JavaScript World Wide Web ki official programming language hai. Ye ek high-level, just-in-time compiled language hai jo har modern browser ke andar natively run hoti hai.
HTML ne webpage ka structure banaya aur CSS ne use sundar dikhaya. Lekin JavaScript wo engine hai jo webpage ke andar jaan (life) dalta hai — jaise button click hone par modal popup kholna, cart mein total bill calculate karna aur bina page reload kiye server se naya data fetch karna.
2. Why do we use it? (JavaScript Kyun Chahiye?)
HTML aur CSS powerful hain, lekin unke pass koi computational dimaag (logic) nahi hota:
- HTML shopping cart mein items ka total price multiply nahi kar sakta.
- CSS server se live weather report ya stock prices download karke screen par update nahi kar sakti.
- HTML/CSS user ke form submit karne par database se connect nahi kar sakte.
JavaScript ke aane se:
- Dynamic DOM Manipulation: Aap user ke actions ke hisab se kisi bhi HTML element ko screen par add, remove ya style change kar sakte hain.
- Event-Driven Programming: Button click, mouse move, keyboard keypress aur form submit hone par custom logic execute kar sakte hain.
- State Management: User ke login credentials, cart items aur dark mode theme preference ko browser ki memory mein yaad rakh sakte hain.
- Asynchronous APIs: Page ko refresh kiye bina background mein server se data exchange kar sakte hain.
3. Simple Explanation (Real-Life Analogy)
Hamara ghar wala example:
- HTML ne cement ki deewarein aur rooms banaye the.
- CSS ne deewaron par paint lagaya aur furniture arrange kiya tha.
- JavaScript ghar ka Smart Automation System hai:
- Jab koi bahar doorbell ka switch dabata hai (User click event), to living room mein ghanti bajti hai aur camera phone par live video bhejta hai (JavaScript Event Listener function).
- Agar room ka temperature 18°C se kam ho jaye (Conditional
if/else), to automatic heater on ho jata hai. - Jab aap door lock par password enter karte hain, to security system check karta hai ki passcode sahi hai ya galat (Validation logic).
Bina JavaScript ke ghar sirf ek static structure hai; JavaScript use ek intelligent smart home bana deta hai.
4. Technical Explanation: V8 Engine & <script defer>
Har modern browser ke andar ek high-performance JavaScript engine hota hai (jaise Google Chrome ka V8, Safari ka JavaScriptCore aur Firefox ka SpiderMonkey).
JavaScript Code
│
▼
Parser (Abstract Syntax Tree - AST)
│
▼
Ignition (Bytecode Interpreter) ──► Fast Execution
│
▼ (Frequently run code ko profile karta hai)
TurboFan (JIT Compiler) ──► Super Fast Machine CodeScript Load Karne Ka Sahi Tarika: defer
Agar aap HTML mein <script src="app.js"></script> bina kisi attribute ke likhte hain, to browser HTML padhna rok deta hai (parser blocking).
Parser Blocking (Purana Tarika):
HTML: ████████████[PAUSE & WAIT]████████████►
async:
HTML: ██████████████████████[EXECUTE]██████████████████►
Script: [DOWNLOAD]──────►
defer (Modern Production Standard):
HTML: █████████████████████████████████████████████████►
Script: [DOWNLOAD IN PARALLEL]──► [DOM BASHNE KE BAAD RUN HOGA]IMPORTANT
Production Rule: Application scripts par hamesha defer use karein: <script src="app.js" defer></script>. Isse browser background mein JS download karta hai aur jab poora HTML DOM parse ho jata hai, tabhi script execute karta hai. Isse page load fast hota hai aur elements missing hone ka error nahi aata!
5. Variables & Memory: var vs let vs const
ES6+ mein modern JavaScript ne purane var ko replace karne ke liye let aur const introduce kiya:
| Feature | var (Purana — Use Na Karein) | let (Modern Changeable) | const (Modern Fixed) |
|---|---|---|---|
| Scope | Function Scope | Block Scope ({ ... }) | Block Scope ({ ... }) |
| Re-declaration | Same naam se dobara declare ho jata hai (Bugs aate hain) | Error deta hai (SyntaxError) | Error deta hai (SyntaxError) |
| Reassignment | Allowed | Allowed (score = score + 1) | Not Allowed (TypeError) |
| Hoisting | undefined ke sath hoist hota hai | TDZ mein rehta hai | TDZ mein rehta hai |
Temporal Dead Zone (TDZ):
Jab aap let ya const declare karte hain, to block start hone se lekar us declaration wali line tak variable TDZ mein band rehta hai. Agar aap line aane se pehle use access karenge to JS ReferenceError dega, jo bugs pakadne mein bohot help karta hai.
// Const use karein un values ke liye jo badalni nahi hain
const API_URL = 'https://api.example.com';
const user = { name: 'Rahul', role: 'developer' };
// Dhyan dein: Const object ke andar ki properties ko mutate karna allowed hai!
user.role = 'architect'; // Perfectly Valid!
// Lekin poore object ko dobara assign karna mana hai:
// user = {}; // TypeError!
// Let use karein jab value time ke sath update honi ho
let counter = 0;
counter++;6. JavaScript Data Types & Type Coercion
JavaScript mein 8 Data Types hote hain:
7 Primitive Types (Stack memory mein store hote hain):
string: Text data ('Rahul',"Dev",`Hello ${name}`).number: Decimals aur integers sab ek hi type mein (42,3.14,NaN).bigint: Bohot bade numbers (9007199254740991n).boolean: True ya false.undefined: Variable banaya lekin value assign nahi ki.null: Janbujhkar di gayi empty value (Intentional absence of object).symbol: Unique identifier.
1 Reference Type (Heap memory mein store hota hai):
object: Plain Objects, Arrays aur Functions sab object type hain!
Strict Equality (===) vs Loose Equality (==):
// Loose equality (==) type convert kar deta hai (DO NOT USE!):
console.log(5 == '5'); // true (String ko Number bana diya)
console.log(0 == false); // true
// Strict equality (===) Value aur Type dono check karta hai (ALWAYS USE THIS!):
console.log(5 === '5'); // false (Number is not String!)
console.log(0 === false); // false7. Operators, Strings & Math
Modern Operators:
- Nullish Coalescing (
??): Sirf tabhi fallback value use karta hai jab left valuenullyaundefinedho (agar value0ya""ho to use valid manta hai):javascriptconst count = 0; const orResult = count || 10; // 10 (Galti! 0 ko falsy mankar 10 de diya) const nullResult = count ?? 10; // 0 (Sahi! 0 ek valid score hai) - Optional Chaining (
?.): Deep object properties ko bina crash huye safely access karta hai:javascriptconst user = { profile: null }; console.log(user.profile?.address?.city); // undefined (Koi error nahi aayega!)
Useful String Methods:
const str = " Web Development Mastery ";
console.log(str.trim()); // "Web Development Mastery"
console.log(str.includes("Web")); // true
console.log(str.toLowerCase()); // " web development mastery "
console.log("apple,banana".split(",")); // ["apple", "banana"]8. Functions & Modern Arrow Syntax
// 1. Regular Function Declaration (Hoisting hoti hai)
function add(a, b) {
return a + b;
}
// 2. Modern Arrow Function (Clean syntax)
const multiply = (a, b) => a * b;
// 3. Rest Parameters (...numbers sabhi extra arguments ko array bana deta hai)
const sumNumbers = (...numbers) => {
return numbers.reduce((acc, curr) => acc + curr, 0);
};
console.log(sumNumbers(5, 10, 15)); // 309. Arrays & Core Methods
const tech = ['HTML', 'CSS', 'JavaScript'];
// Array modify karne wale methods
tech.push('React'); // Aakhiri mein add karna
tech.pop(); // Aakhiri se hatana
tech.unshift('Git'); // Shuruat mein add karna
tech.shift(); // Shuruat se hatana
// Array check aur slice karna
console.log(tech.includes('CSS')); // true
const sub = tech.slice(0, 2); // ['HTML', 'CSS']
// Array loop karna
tech.forEach((item, index) => {
console.log(`${index + 1}. ${item}`);
});10. Objects & Reference Semantics
const student = {
id: 101,
name: 'Aman Kumar',
course: 'Full Stack',
skills: ['HTML', 'CSS', 'JS'],
// Method
introduce() {
return `Namaste, main hoon ${this.name}`;
}
};
// Dot notation aur Destructuring
console.log(student.name);
const { name, course } = student;
console.log(name, course);11. The Document Object Model (DOM)
Browser memory mein HTML page ka ek tree banata hai jise DOM kehte hain. JavaScript document object ke sahare DOM ko modify karta hai:
Elements Select Karna:
// Ek single element select karna
const title = document.querySelector('#main-heading');
const submitBtn = document.querySelector('.btn-primary');
// Multiple elements select karna (NodeList milti hai)
const navLinks = document.querySelectorAll('nav a');
navLinks.forEach(link => {
link.style.color = '#0ea5e9';
});Content aur Classes Badalna:
const card = document.querySelector('.card');
// Text change karna (Safe tarika - XSS se bachata hai)
card.textContent = 'Updated Card Content';
// CSS Classes add aur remove karna
card.classList.add('active');
card.classList.remove('hidden');
card.classList.toggle('dark-mode');12. Events & Form Handling
Browser user ke har interaction (click, type, submit) par ek Event trigger karta hai:
const form = document.querySelector('#signupForm');
const emailInput = document.querySelector('#emailField');
const statusBox = document.querySelector('#status');
form.addEventListener('submit', (e) => {
// CRITICAL: Form submit hone par page ko reload hone se rokna!
e.preventDefault();
const email = emailInput.value.trim();
if (!email.includes('@')) {
statusBox.textContent = 'Kripya ek valid email address enter karein.';
statusBox.style.color = '#ef4444';
emailInput.focus();
return;
}
// Success flow
statusBox.textContent = `Shukriya! Verification link ${email} par bhej diya gaya hai.`;
statusBox.style.color = '#10b981';
form.reset();
});13. Visual / Mental Model: Event-Driven Lifecycle
[ User Action: Button Click ]
│
▼
[ Browser Create Karta Hai: MouseEvent Object ]
│
▼
[ Target Element: <button class="btn"> ]
│
▼
[ Trigger: addEventListener('click', callback) ]
│
▼
[ JavaScript Engine Callback Function Run Karta Hai ]
│
▼
[ DOM Update: textContent ya classList change hoti hai ]
│
▼
[ Screen Par Live Naya Result Dikh Jata Hai ]14. Common Mistakes (Jo Naye JS Developers Karte Hain)
- Form Submit Par
e.preventDefault()Bhool Jana:- Agar ye nahi likhenge to browser full page reload karega aur aapka sara JS state gayab ho jayega!
textContentKi Jagah Har JagahinnerHTMLUse Karna:- User ke input ko kabhi direct
innerHTMLmein mat daalein, warna koi bhi user<script>tag daal kar Cross-Site Scripting (XSS) attack kar sakta hai. Text ke liye hamesha.textContentuse karein.
- User ke input ko kabhi direct
- Objects Ko
===Se Compare Karna:{ a: 1 } === { a: 1 }hamesha false hota hai kyunki JavaScript dono ke memory reference ko compare karta hai, unke andar ki values ko nahi!
15. Interview Questions & Answers
Q1: var, let aur const mein kya difference hai aur TDZ kya hota hai?
Answer: var function-scoped hota hai, same scope mein re-declare kiya ja sakta hai aur undefined ke sath hoist hota hai jisse bugs bante hain. let aur const block-scoped ({ ... }) hote hain aur same block mein re-declare nahi ho sakte. Inka declaration bhi hoist hota hai lekin initialization se pehle ka time Temporal Dead Zone (TDZ) kehlata hai. TDZ ke dauran access karne par JS turant ReferenceError phekta hai. const ko dubara reassign nahi kiya ja sakta jabki let ki value badli ja sakti hai.
Q2: Strict equality (===) aur loose equality (==) mein kya antar hai?
Answer: Loose equality (==) compare karne se pehle type coercion (automatic type conversion) karti hai, jaise "5" == 5 ko true bata deti hai. Jabki strict equality (===) bina kisi conversion ke value aur data type dono ko verify karti hai, isliye production code mein hamesha === use kiya jata hai.
16. Quick Revision Points
- By default hamesha
constuse karein; sirf tabletuse karein jab value badalni ho.varkabhi use na karein. - Scripts ko hamesha
<script src="..." defer></script>se load karein. - Comparisions ke liye hamesha
===lagayein. - Elements select karne ke liye
querySelectoraurquerySelectorAllbest hain. - Form submit handling mein
e.preventDefault()lagana compulsory hai. - XSS security se bachne ke liye
innerHTMLki jagahtextContentuse karein.
17. Next Topic (Agla Kadam)
Aapka agla step hai Module 06 — Advanced JavaScript, Async & APIs, jahan hum closures, execution context, this keyword, Promises, async/await, Event Loop aur Fetch API ko master karenge!