18 kỹ thuật rút gọn Js cần biết
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
Nhận xét