تیر والے فنکشنز مختصر ہیں، لیکن اصل فرق بندش کے رویے میں ہے، نہ کہ صرف نحو میں۔
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
تیر والے فنکشنز مختصر ہیں، لیکن اصل فرق بندش کے رویے میں ہے، نہ کہ صرف نحو میں۔
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. اپنا this نہیں — تیر اردگرد کی scope سے this کو وراثت میں لیتے ہیں۔ یہ سب سے اہم فرق ہے اور یہ callbacks کے لیے بہترین کیوں ہیں:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. کوئی arguments object نہیں — بجائے اس کے rest parameters استعمال کریں:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Constructor کے طور پر استعمال نہیں کیے جا سکتے — new arrow() error پھینکتا ہے، اور ان کے پاس prototype نہیں ہے۔
const obj = {
name: "Ann",
greet: () => `Hi ${this.name}`, // ❌ `this` is NOT obj (it's outer scope)
greet2() { return `Hi ${this.name}`; }, // ✅ method needs dynamic `this`
};
object methods کے لیے تیر استعمال نہ کریں (وہ object سے منسلک نہیں ہوں گے) یا جب آپ کو متحرک this/arguments کی ضرورت ہو (event handlers جو اس بات پر منحصر ہوں کہ this element ہے)۔
Callbacks اور مختصر functions کے لیے تیر استعمال کریں جہاں this کو وراثت میں لینا وہی ہے جو آپ چاہتے ہیں؛ methods، constructors، اور prototype methods کے لیے عام functions استعمال کریں۔
تفصیلی جوابات کے ساتھ IT انٹرویو سوالات کی ایک لائبریری — جونیئر سے سینئر تک۔
عطیہ دیں