Skip to content

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:

  1. 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.
  2. Event-Driven Programming: Button click, mouse move, keyboard keypress aur form submit hone par custom logic execute kar sakte hain.
  3. State Management: User ke login credentials, cart items aur dark mode theme preference ko browser ki memory mein yaad rakh sakte hain.
  4. 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 Code

Script 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:

Featurevar (Purana — Use Na Karein)let (Modern Changeable)const (Modern Fixed)
ScopeFunction ScopeBlock Scope ({ ... })Block Scope ({ ... })
Re-declarationSame naam se dobara declare ho jata hai (Bugs aate hain)Error deta hai (SyntaxError)Error deta hai (SyntaxError)
ReassignmentAllowedAllowed (score = score + 1)Not Allowed (TypeError)
Hoistingundefined ke sath hoist hota haiTDZ mein rehta haiTDZ 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.

javascript
// 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):

  1. string: Text data ('Rahul', "Dev", `Hello ${name}`).
  2. number: Decimals aur integers sab ek hi type mein (42, 3.14, NaN).
  3. bigint: Bohot bade numbers (9007199254740991n).
  4. boolean: True ya false.
  5. undefined: Variable banaya lekin value assign nahi ki.
  6. null: Janbujhkar di gayi empty value (Intentional absence of object).
  7. symbol: Unique identifier.

1 Reference Type (Heap memory mein store hota hai):

  1. object: Plain Objects, Arrays aur Functions sab object type hain!

Strict Equality (===) vs Loose Equality (==):

javascript
// 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); // false

7. Operators, Strings & Math

Modern Operators:

  • Nullish Coalescing (??): Sirf tabhi fallback value use karta hai jab left value null ya undefined ho (agar value 0 ya "" ho to use valid manta hai):
    javascript
    const 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:
    javascript
    const user = { profile: null };
    console.log(user.profile?.address?.city); // undefined (Koi error nahi aayega!)

Useful String Methods:

javascript
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

javascript
// 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)); // 30

9. Arrays & Core Methods

javascript
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

javascript
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:

javascript
// 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:

javascript
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:

javascript
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)

  1. 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!
  2. textContent Ki Jagah Har Jagah innerHTML Use Karna:
    • User ke input ko kabhi direct innerHTML mein mat daalein, warna koi bhi user <script> tag daal kar Cross-Site Scripting (XSS) attack kar sakta hai. Text ke liye hamesha .textContent use karein.
  3. 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 const use karein; sirf tab let use karein jab value badalni ho. var kabhi use na karein.
  • Scripts ko hamesha <script src="..." defer></script> se load karein.
  • Comparisions ke liye hamesha === lagayein.
  • Elements select karne ke liye querySelector aur querySelectorAll best hain.
  • Form submit handling mein e.preventDefault() lagana compulsory hai.
  • XSS security se bachne ke liye innerHTML ki jagah textContent use 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!

G-TEC Jain Keerti Education — Global Leader in IT Education