18+ kĩ thuật rút gọn code Javascript của bạn

4435

1. Toán tử 3 ngôi (Ternary Operator)

Sử dụng khi cần rút ngắn đoạn if..else thành 1 dòng. Thay vì

thì

2. Shorthand Evaluate

Khi gán giá trị của biến cho biến khác, chúng ta thường muốn đảm bảo rằng giá trị biến đó không null, không undefinded hoặc rỗng, vì vậy mà cần phải viết một loạt điều kiện để kiểm tra:

Có thể rút ngắn gọn thành:

3. Khai báo biến

Khai báo biến tốt nhất là khai báo khi bắt đầu 1 function. Cách viết sau sẽ giúp bạn tiết kiệm được thời gian cũng như số dòng khi khai báo: Thay vì

Thay bằng:

4. Bỏ qua toán tử so sánh bằng trong If

Khi điều kiện là so sánh bằng, trong trường hợp biến đã được định nghĩa trước và quy ước kiểu là Boolean, ta có thể bỏ qua toán tử so sánh == hoặc ===

Thay bằng

Hoặc nếu trong trường hợp giá trị cần là false

5. Vòng lặp For

Tip sau sẽ thực sự hữu ích trong trường hợp bạn muốn sử dụng Js thuần mà không phụ thuộc vào thư viện bên thứ 3 như Lodash hay jQuery. Thay vì:

Thành

6. Decimal base exponents

Để biểu diễn số hàng triệu, hàng tỉ, thay vì viết một đống con số 0, ta có thể viết thành kiểu là số thực phẩy động (float type). Thay vì

thành

7. Object property

ES6 cung cấp cho ta khả năng gán property cho object dễ dàng hơn. Nếu tên key trùng luôn với tên biến, thì, thay vì:

có thể viết lại thành

8. Rút gọn khai báo function

Kiểu khai báo function cũ thì dễ đọc dễ viết, nhưng nó sẽ trở nên rối khi nằm chung với những lời gọi hàm khác. Ví dụ thay vì

có thể dùng cú pháp arrow để khai báo function (arrow function):

9. Implicit Return

Thường ta sử dụng return để trả về kết quả cuối của function. Tuy nhiên trong arrow function thì việc return kết quả là implicit: Thay vì:

có thể ngắn gọn hơn:

10. Giá trị default cho params của function

Có thể sử dụng if để gán giá trị default cho params của function trong trường hợp cần thiết. Tuy nhiên từ ES6, bạn có thể gán giá trị default cho params ngay khi khai báo hàm. Thay vì:

thành:

11. Template Literals

Mệt mỏi vì dùng toán tử + để cộng biến nối chuỗi ? Từ ES6 trở đi, ta được cung cấp một giải pháp ngắn gọn và trực quan hơn bằng cách sử dụng ${} trong cặp nháy backtick :

thay bằng:

12. Destructuring Assignment

Nếu đã làm việc với các framework js, hẳn ta không lạ gì việc truyền các data dưới dạng object giữa các component với nhau. Khi data object được truyền tới nơi thì ta cần unpack nó.

Đoạn trên có thể rút gọn:

13. Multi-line string

Để gán giá trị cho một biến là một chuối nhiều dòng, thay vì:

đơn giản ta wrap tất cả text trong cặp backtick

 

14. Spread Operator

Trong ES6 spec có giới thiệu một chức năng mới khá là lợi hại mà không phải ai cũng hay dùng, đó là Spread Operator. Chức năng này không có gì là xa lạ với các ngôn ngữ khác, trong thế giới Ruby thì nó tương đương splat operator. Spread Operator cho phép chuyển đổi một chuỗi thành nhiều argument (trong trường hợp gọi với hàm) hoặc thành nhiều phần tử (cho array). Thêm vào nữa nó cũng cho phép làm nhiệm vụ destructure. Operator này có syntax là 3 dấu chấm ...

 

Ngắn gọn hơn:

 

Không như hàm concat(), dùng spread operator, ta có thể chèn 1 array vào vị trí bất kì nào trong array cần chèn tới:

 

  • Spread operator trong gọi hàm: Nếu có 1 hàm như sau:

vả array chứa thông tin sẽ dùng làm tham số truyền vào:

để truyền tham số vào hàm thì cần làm như sau:

hoặc có cách khác hay hơn nếu chúng ta ko biết rõ biến names dài bao nhiêu với Function.prototype.apply

Với ES6, ta có thể áp dụng spread operator như sau:

15. Ràng buộc params

Default thì Javascript sẽ set parameters là undefined nếu không có value được truyền vào function. Ở một số ngôn ngữ khác, nó ném ra exception hoặc warning nếu không truyền đủ params. Để làm điều tương tự với Javascript, ta có thể xét ràng buộc:

Hoặc viết ngắn gọn hơn bằng cách sử dụng Mandatory parameter

16. Array.find

Nếu từng phải viết hàm tìm kiếm bằng Javascript thuần, hẳn ta sẽ nghĩ ngay đến việc dùng vòng lặp for lặp qua từng phần tử và kiểm tra điều kiện tìm kiếm. Tuy nhiên trong ES6, function find của array được giới thiệu, giúp cho việc tìm phần tử trong array ngắn gọn hơn. Thay vì

thành

17. Object [key]

Để get property của object trong JS ngoài cách Obj.prop, còn có thể viết Obj['prop']. Nhìn qua thì dùng cả 2 cách đều cho kết quả như nhau. Tuy nhiên để viết được những đoạn code có thể tái sử dụng, thì cần sử dụng cách thứ 2: Xem xét ví dụ 1 hàm validation:

Đoạn code trên hoạt động rất tốt, tuy nhiên nó lại chỉ áp dụng được với duy nhất trường hợp object có đúng 2 property firstName, lastName. Để có thể áp dụng được với những object có property khác, validation rule khác thì ta cần viết tổng quát hơn:

 

Giờ thì hàm validate đã tổng quát hơn và có khả năng tái sử dụng nhờ cách gọi property Obj['prop']

18. Toán tử bitwise NOT Double

Double bitwise NOT (2 lần phủ định) có thể dùng thay thế cho hàm làm tròn xuống Math.floor(). Ưu điểm của các phép toán bitwise đó là nó thực hiện tác vụ tương tự cho hiệu suất cao hơn do làm việc trực tiếp với binary. Cách viết dài:

Ngắn gọn:

KẾT LUẬN

Trên đây bài viết đã tổng hợp một số kĩ thuật khiến code Javascript trở nên ngắn gọn, rõ ràng hơn. Hi vọng bài viết sẽ giúp được phần nào các bạn trong quá trình làm việc với Javascript.

TopDev via Viblo

SHARE