दिन 2: Variables, Data Types और Template Literals
✅ आज आप सीखेंगे
- let और const से values रखना (और var से क्यों बचते हैं)
- Naming नियम और अच्छे नाम
- Data types: string, number, boolean, null, undefined, bigint, symbol, object
- typeof और types के बीच बदलना
- साफ़ messages के लिए template literals
🏢 असली दुनिया में
हर program चीज़ें याद रखता है: product का नाम, उसका price, customer कितने kg चाहता है, delivery मुफ़्त है या नहीं। Variables उन values के लिए नाम वाले डिब्बे हैं। एक दुकान के billing page का असली bug: “2 kg × ₹900 दिखाता है ₹9009002” – quantity text के रूप में रखी थी। आज आप सीखेंगे ऐसा ठीक-ठीक क्यों होता है और कैसे रोकें।
let और const
const shopName = 'Sharma Sweets'; // will never change → const let cartItems = 0; // will change → let cartItems = cartItems + 1; cartItems = cartItems + 2; console.log(shopName, 'cart:', cartItems); // shopName = 'Other'; ← TypeError: Assignment to constant variable.
| Keyword | दोबारा assign? | Scope | कब |
|---|---|---|---|
| const ⭐ | नहीं | Block { } | Default – ज़्यादातर values नहीं बदलतीं |
| let | हाँ | Block { } | Counters, totals, बदलने वाली values |
| var | हाँ | Function (blocks से बाहर निकलता है) | सिर्फ़ पुराना code – नए में बचें |
हर variable const से शुरू करें। let तभी करें जब सच में दोबारा assign करना हो। Code पढ़ना आसान होता है क्योंकि पढ़ने वाले जानते हैं कौन सी values बदल सकती हैं।
Variables के नाम
बुरे नाम
- x, a1, data2
- TOTALAMOUNTOFBILL
- total-price (invalid: hyphen)
- 2ndItem (invalid: अंक से शुरू)
अच्छे नाम (camelCase)
- pricePerKg, quantityKg
- isDeliveryFree (booleans is/has से)
- customerName, orderTotal
- Fixed settings के लिए MAX_ITEMS
Data types
const name = 'Kaju Katli'; // string
const price = 900; // number (integers and decimals)
const rating = 4.8; // number
const inStock = true; // boolean
let discountCode; // undefined – declared, no value yet
const gstNumber = null; // null – intentionally empty
const bigOrderId = 9007199254740993n; // bigint
const product = { name, price }; // object
const sizes = ['250g', '500g', '1kg']; // array (also an object)
console.log(typeof name, typeof price, typeof inStock);
console.log(typeof discountCode, typeof gstNumber, typeof bigOrderId);
console.log(typeof product, typeof sizes, Array.isArray(sizes));typeof null "object" है – 1995 का bug जो compatibility के लिए रखा गया। और arrays भी objects हैं, इसलिए arrays जाँचने को Array.isArray() लें। Interviewers दोनों पसंद करते हैं।
Types बदलना – 9009002 bug
const qtyFromInput = '2'; // everything from an <input> is a STRING
const price = 900;
console.log('Wrong:', qtyFromInput + price); // joins text!
console.log('Wrong:', qtyFromInput * price); // works by luck (* converts)
console.log('Right:', Number(qtyFromInput) * price); // convert first ✅
console.log(Number('2.5'), Number(''), Number('abc'));
console.log(parseInt('250g'), parseFloat('1.5kg'));
console.log(String(1800), (1800).toString(), Boolean(0), Boolean('hi'));| Function | उदाहरण | नतीजा |
|---|---|---|
| Number() | Number('2.5') | 2.5 (number न हो तो NaN) |
| parseInt / parseFloat | parseInt('250g') | 250 – पहले non-digit तक अंक पढ़ता है |
| String() | String(1800) | '1800' |
| Boolean() | Boolean('') | false – ख़ाली string, 0, null, undefined, NaN falsy हैं |
| Number.isNaN() | Number.isNaN(Number("abc")) | true – number इस्तेमाल से पहले जाँचें |
Template literals
const customer = 'Aarti';
const item = 'Kaju Katli';
const qty = 2;
const price = 900;
// Old way – hard to read
console.log('Hi ' + customer + ', ' + qty + ' kg ' + item + ' = Rs ' + qty * price);
// Template literal – backticks and ${ }
console.log(`Hi ${customer}, ${qty} kg ${item} = ₹${qty * price}`);
// Multi-line text is easy too
const sms = `Sharma Sweets 🍬
Order confirmed for ${customer}.
Total: ₹${qty * price}`;
console.log(sms);असली task: bill calculator
<label>Quantity (kg) <input id="qty" type="number" value="2" min="0.25" step="0.25"></label>
<button id="calc">Calculate</button>
<pre id="bill"></pre>
<script>
const PRICE_PER_KG = 900;
const GST_RATE = 0.05; // 5% GST on sweets
document.querySelector('#calc').addEventListener('click', function () {
const qty = Number(document.querySelector('#qty').value); // string → number
const amount = qty * PRICE_PER_KG;
const gst = amount * GST_RATE;
const total = amount + gst;
document.querySelector('#bill').textContent =
`Kaju Katli ${qty} kg × ₹${PRICE_PER_KG}
Amount ₹${amount.toFixed(2)}
GST 5% ₹${gst.toFixed(2)}
Total ₹${total.toFixed(2)}`;
});
</script>🏅 आज के Job Skills
Practice tasks
🏋️ Practice – ख़ुद करें
Solution देखें
const student = 'Riya';
const maths = 88, science = 92, english = 79;
const total = maths + science + english;
const percent = (total / 300) * 100;
console.log(`${student}: ${total}/300 = ${percent.toFixed(1)}%`);"5" + 3, "5" - 3, "5" * "2", true + 1।Solution देखें
console.log("5" + 3); // "53" (+ with a string joins)
console.log("5" - 3); // 2 (- converts to number)
console.log("5" * "2"); // 10
console.log(true + 1); // 2 (true becomes 1)Quick quiz
🧠 Quick Quiz – ख़ुद को जाँचें
Interview corner
💼 Interview Corner
let, const और var में फ़र्क?
var function-scoped है, undefined के साथ hoist होता है और दोबारा declare हो सकता है; let और const block-scoped हैं और declare होने तक temporal dead zone में। const दोबारा assign नहीं होता (पर जिस object की ओर इशारा करे वह बदल सकता है)।
null बनाम undefined?
undefined का मतलब variable है पर अभी value नहीं (JavaScript देता है); null programmer का जानबूझकर दिया “कोई value नहीं” है। typeof undefined "undefined", typeof null "object"; null == undefined true पर null === undefined false।
सारांश
- Default में const, दोबारा assign पर let, var से बचें।
- camelCase, अर्थपूर्ण नाम; booleans is/has से।
- typeof type बताता है; inputs strings हैं – Number() से बदलें।
- Template literals: `Total ₹${total}`।
Day 3: operators और conditions – if, else और switch से discounts, free delivery नियम और grade calculators।
