माझ्या Best Practices – JavaScript

1. Cache बंद करा

Firefox:
Developer Tools उघडा -> Settings उघडा (F1) -> "Disable HTTP Cache (when toolbox is open)"

Chrome:
Developer Tools उघडा -> Settings उघडा (F1) -> "Disable cache (while DevTools is open)"

2. JS console उघडा ठेवा

Dev Tools मध्ये Console टॅब उघडा आणि तो उघडाच ठेवा, म्हणजे पहिली पायरी लागू राहील आणि network व JS मधील errors सुद्धा तुमच्या लक्षात येतील.

हे plugin सुद्धा उपयुक्त आहे, जे JS errors आणखी चांगल्या प्रकारे दाखवते – तुम्ही स्वतः कधी पाहायला विसरलात तर:

3. JavaScript: आवर्जून वाचा – “You Don't Know JS”

4. सेमीकोलन

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

// JavaScript Interpretation:
return;
5;

5. Logical operators && आणि ||

Expressions सुद्धा अशा प्रकारे जोडता येतात आणि त्यातून आजवरचे सर्वात छोटे if-statement तयार होते – syntax sugar:

Default values साठीही याचा वापर अनेकदा केला जातो:

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

याचा output असा येतो:

10
changed
unchanged

obj1 हा reference नसताच, तर obj1.item बदलल्याचा function च्या बाहेरील obj1 वर काहीही परिणाम झाला नसता.

Argument खरा reference असता, तर सगळेच बदलले असते: num 100 झाला असता आणि obj2.item मध्ये “changed” असते. उलट num 10 च राहतो आणि obj2.item “unchanged” च राहतो.

प्रत्यक्षात pass केलेली गोष्ट by value pass होते. पण जी गोष्ट by value pass होते, ती स्वतःच एक reference असते. तांत्रिकदृष्ट्या याला call-by-sharing म्हणतात.

व्यवहारात याचा अर्थ: तुम्ही parameter च बदलला (जसे num आणि obj2 च्या बाबतीत), तर function मध्ये pass केलेल्या मूळ object वर त्याचा काहीही परिणाम होत नाही. पण parameter ची internal values बदलली, तर ते बदल कायम राहतात (जसे obj1 च्या बाबतीत).