Best Practices trong JavaScript - Fedu

CHÀO MỪNG BẠN ĐẾN VỚI THƯ VIỆN HỌC TẬP & ĐÀO TẠO CƠ BẢN

Best Practices trong JavaScript

JavaScript

Hướng dẫn JavaScript

Biểu mẫu JavaScript

Đối tượng JavaScript

Hàm JavaScript

DOM JavaScript

Trình duyệt BOM

JavaScript Ajax

JavaScript Json

Best practices trong JavaScript là những thói quen lập trình tốt mà các lập trình viên thường tuân thủ.

Tránh dùng biến toàn cục

Giảm thiểu việc sử dụng các biến toàn cục, bao gồm tất cả các loại dữ liệu, đối tượng và hàm. Biến toàn cục và các hàm có thể được ghi đè bởi các script khác.

Thay vào đó hãy sử dụng các biến cục bộ và tìm hiểu cách sử dụng hàm đóng.

Luôn khai báo các biến cục bộ

Tất cả các biến được sử dụng trong một hàm cần được khai báo như các biến cục bộ. Các biến cục bộ phải được khai báo bằng từ khóa var, nếu không chúng sẽ trở thành các biến toàn cục.

Strict mode không cho phép các biến không được khai báo.

Khai báo ở đầu

Tốt hơn hết là đặt tất cả các khai báo ở đầu mỗi script hoặc hàm. Điều này sẽ:

  • Các đoạn mã sạch hơn
  • Cung cấp một nơi duy nhất để tìm kiếm các biến cục bộ
  • Tránh được các biến toàn cục không cần dùng đến
  • Tránh được việc phải khai báo lại

// Khai báo khi mở đầu
var firstName, lastName, price, discount, fullPrice;

// Sử dụng sau
firstName = “John”;
lastName = “Doe”;

price = 19.90;
discount = 0.10;

fullPrice = price * 100 / discount;

Điều này cũng áp dụng cho các biến vòng lặp:

// Khai báo khi mở đầu
var i;

// Use later
for (i = 0; i < 5; i++) {

Khởi tạo các biến

Đó là một thực hành mã hóa tốt để khởi tạo các biến khi bạn khai báo chúng. Điều này sẽ:

  • Giúp mã sạch hơn
  • Cung cấp một nơi duy nhất để khởi tạo các biến
  • Tránh các giá trị không xác định

// Khai báo và bắt đầu
var firstName = “”,
lastName = “”,
price = 0,
discount = 0,
fullPrice = 0,
myArray = [],
myObject = {};

Khởi tạo các biến cung cấp một ý tưởng về việc chủ định sử dụng (và kiểu dữ liệu mong muốn).

Không khai báo Số, Chuỗi, hoặc đối tượng Boolean

Luôn luôn xử lý số, chuỗi, hoặc các phép toán luận như các giá trị nguyên hàm. Không phải là đối tượng. Khai báo các đối tượng làm chậm tốc độ thực hiện và tạo ra những hiệu ứng phụ không mong muốn:

var x = “John”;
var y = new String(“John”);
(x === y) // sai vì x là chuỗi và y là một đối tượng.

hay

var x = new String(“John”);
var y = new String(“John”);
(x == y) // sai vì không thể so sánh các đối tượng.

Không sử dụng Object() mới

  • Sử dụng {} thay vì Object() mới
  • Sử dụng “” thay cho String() mới
  • Sử dụng 0 thay vì Number() mới
  • Sử dụng false thay vì Boolean() mới
  • Sử dụng [] thay vì Array() mới
  • Sử dụng / () / thay vì RegExp() mới
  • Sử dụng hàm () {} thay vì Function() mới

var x1 = {};           // đối tượng mới
var x2 = “”;           // chuỗi nguyên hàm mới
var x3 = 0;            // số nguyên hàm mới
var x4 = false;        // boolean nguyên hàm mới
var x5 = [];           // đối tượng array mới
var x6 = /()/;         // đối tượng regexp mới
var x7 = function(){}; // hàm đối tượng mới

Cẩn thận với kiểu chuyển đổi tự động

Lưu ý rằng number có thể được chuyển đổi sang string hoặc NaN (Không phải là một Số). Một biến có thể chứa các kiểu dữ liệu khác nhau, và một biến có thể thay đổi kiểu dữ liệu của nó:

var x = “Hello”;     // typeof x là một chuỗi
x = 5;               // thay đổi typeof x thành một số

Khi thực hiện các hoạt động toán học, JavaScript có thể chuyển đổi các số thành chuỗi:

var x = 5 + 7;       // x.valueOf() là 12,  typeof x là một số
var x = 5 + “7”;     // x.valueOf() là 57,  typeof x là một chuỗi
var x = “5” + 7;     // x.valueOf() là 57,  typeof x là một chuỗi
var x = 5 – 7;       // x.valueOf() là -2,  typeof x là một số
var x = 5 – “7”;     // x.valueOf() là -2,  typeof x là một số
var x = “5” – 7;     // x.valueOf() là -2,  typeof x là một số
var x = 5 – “x”;     // x.valueOf() là NaN, typeof x là một số

Trừ một chuỗi từ một chuỗi, không tạo ra một lỗi nhưng trả về NaN (không phải là một số):

“Hello” – “Dolly”    // trả về NaN

Sử dụng so sánh ===

Toán tử so sánh == luôn chuyển đổi (để kết hợp các loại) trước khi so sánh. Các toán tử === so sánh các giá trị và kiểu:

0 == “”;        // true
1 == “1”;       // true
1 == true;      // true

0 === “”;       // false
1 === “1”;      // false
1 === true;     // false

Sử dụng thông số mặc định

Nếu một hàm được gọi với một đối số bị thiếu, giá trị của đối số bị thiếu được đặt là không xác định. Các giá trị không xác định có thể làm hỏng mã của bạn. Bởi vậy bạn cần gán các giá trị mặc định cho đối số.

function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}

Sử dụng default khi kết thúc switch

Nên sử dụng default ở cuối cùng của switch.

switch (new Date().getDay()) {
case 0:
day = “Sunday”;
break;
case 1:
day = “Monday”;
break;
case 2:
day = “Tuesday”;
break;
case 3:
day = “Wednesday”;
break;
case 4:
day = “Thursday”;
break;
case 5:
day = “Friday”;
break;
case 6:
day = “Saturday”;
break;
default:
day = “Unknown”;
}

Tránh sử dụng eval()

Hàm eval() được sử dụng để chạy văn bản dưới dạng mã. Trong hầu hết mọi trường hợp, không cần phải sử dụng nó. Bởi vì nó cho phép mã tùy ý được chạy, nó cũng đại diện cho một vấn đề an ninh.