मेरी 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 के साथ)।