07/09/2018, 14:58

Best Practices trong JavaScript

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 ...

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.

Tham khảo thêm các khóa học lập trình web từ Front-end đến Back-end do trực tiếp giảng viên quốc tế trường FPT Arena giảng dạy giúp bạn thành thạo kỹ năng lập trình web từ CƠ BẢN – NÂNG CAO với giá chỉ từ 290,000đ:
  • Học lập trình front-end cơ bản với bootstrap 4/html5/css3
  • Học lập trình front-end nâng cao qua Project thực tế
  • Học thiết kế web với Photoshop, CSS theo kiểu SASS
  • Học cách sử dụng Git_hub cho lập trình viên
  • Học lập trình Back-end PHP theo mô hình MVC cơ bản
  • Học lập trình Back-end PHP theo mô hình MVC nâng cao
  • Học lập trình Cơ sở dữ liệu với AngularJS
  • Học lập trình theme wordpress. Làm ra mọi website hoàn chỉnh với wordpress
  • Combo lập trình front-end từ cơ bản – nâng cao
  • Combo lập trình back-end từ cơ bản đến nâng cao
  • Combo lập trình web với word press từ A-Z
0