Best Practices của tôi – JavaScript

1. Tắt cache

Firefox:
Mở Developer Tools -> Mở Settings (F1) -> "Disable HTTP Cache (when toolbox is open)"

Chrome:
Mở Developer Tools -> Mở Settings (F1) -> "Disable cache (while DevTools is open)"

2. Luôn mở console JS

Trong DevTools, mở tab Console và giữ nó luôn mở, để bước 1 tiếp tục có hiệu lực và bạn cũng thấy được các lỗi mạng và lỗi JS.

Plugin này cũng rất đáng dùng, nó hiển thị lỗi JS còn rõ hơn nữa, phòng khi chính bạn quên để ý:

3. JavaScript: Sách nhất định phải đọc “You Don't Know JS”

4. Dấu chấm phẩy

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

// JavaScript Interpretation:
return;
5;

5. Toán tử logic && và ||

Các biểu thức cũng có thể được nối theo cách này, cho phép viết câu lệnh if ngắn nhất có thể – syntax sugar:

Cách này cũng hay được dùng cho giá trị mặc định:

6. JavaScript là pass-by-reference hay pass-by-value?

Trong JavaScript, chuyện này khá thú vị. Ví dụ:

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

Cho ra kết quả sau:

10
changed
unchanged

Nếu obj1 hoàn toàn không phải là tham chiếu, thì việc thay đổi obj1.item sẽ không ảnh hưởng gì đến obj1 bên ngoài hàm.

Nếu đối số là một tham chiếu thực sự, thì mọi thứ đều sẽ thay đổi: num sẽ là 100, và obj2.item sẽ chứa “changed”. Thay vào đó, num vẫn là 10 và obj2.item vẫn là “unchanged”.

Thực tế, phần tử được truyền vào theo giá trị. Tuy nhiên, thứ được truyền theo giá trị ấy lại chính là một tham chiếu. Về mặt kỹ thuật, cách này được gọi là call-by-sharing.

Trong thực tế, điều đó có nghĩa là: Nếu bạn thay đổi chính tham số (như với num và obj2), điều đó không ảnh hưởng gì đến đối tượng gốc đã được truyền vào hàm. Nhưng nếu bạn thay đổi các giá trị bên trong của tham số, những thay đổi đó sẽ được giữ lại (như với obj1).