میرے بہترین طریقے – JavaScript

1. کیش غیر فعال کریں

Firefox:
Developer Tools کھولیں -> سیٹنگز کھولیں (F1) -> "Disable HTTP Cache (when toolbox is open)"

Chrome:
Developer Tools کھولیں -> سیٹنگز کھولیں (F1) -> "Disable cache (while DevTools is open)"

2. JS کنسول کھلا رکھیں

Dev Tools میں Console ٹیب کھولیں اور اسے کھلا رکھیں، تاکہ مرحلہ 1 مؤثر رہے اور ساتھ ہی آپ کو نیٹ ورک اور JS کی خرابیاں بھی نظر آتی رہیں۔

یہ پلگ اِن بھی قابلِ سفارش ہے، جو JS کی خرابیوں کو اور بھی بہتر طور پر دکھاتا ہے، جب آپ خود ان پر نظر رکھنا بھول جائیں:

3. JavaScript: لازمی مطالعہ “You Don't Know JS”

4. سیمی کولن

// you want to return 5 and have ugly formatting:
return
5

// JavaScript Interpretation:
return;
5;

5. منطقی آپریٹرز && اور ||

Expressions کو بھی اس طرح جوڑا جا سکتا ہے، جس سے اب تک کا مختصر ترین if اسٹیٹمنٹ ممکن ہو جاتا ہے – Syntax Sugar:

یہ طریقہ ڈیفالٹ ویلیوز کے لیے بھی خوب استعمال ہوتا ہے:

6. کیا JavaScript میں pass-by-reference ہے یا pass-by-value؟

JavaScript میں یہ دلچسپ معاملہ ہے۔ مثال:

function changeStuff(a, b, c) {
    a = a * 10;
    b.item = "changed";
    c = {item: "changed"};
}

var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

یہ درج ذیل آؤٹ پٹ دیتا ہے:

10
changed
unchanged

اگر obj1 سرے سے ریفرنس ہی نہ ہوتا، تو obj1.item کو بدلنے کا فنکشن کے باہر والے obj1 پر کوئی اثر نہ ہوتا۔

اگر آرگیومنٹ ایک حقیقی ریفرنس ہوتا، تو سب کچھ بدل جاتا: num کی قدر 100 ہوتی، اور obj2.item میں “changed” ہوتا۔ اس کے بجائے num 10 ہی رہتا ہے اور obj2.item “unchanged” ہی رہتا ہے۔

درحقیقت بھیجا گیا عنصر by value پاس ہوتا ہے۔ تاہم جو چیز by value پاس ہوتی ہے، وہ خود ایک ریفرنس ہے۔ تکنیکی طور پر اسے شیئرنگ کے ذریعے کال (call-by-sharing) کہا جاتا ہے۔

عملی طور پر اس کا مطلب ہے: اگر آپ خود پیرامیٹر کو بدلیں (جیسے num اور obj2 کے ساتھ)، تو فنکشن میں بھیجے گئے اصل آبجیکٹ پر اس کا کوئی اثر نہیں ہوتا۔ لیکن اگر آپ پیرامیٹر کی اندرونی ویلیوز بدلیں، تو یہ تبدیلیاں برقرار رہتی ہیں (جیسے obj1 کے ساتھ)۔