So sánh toán tử 3 ngôi và if else năm 2024

Câu điều kiện

let x;
let y;
let z = 3;

8 luôn được sử dụng rất nhiều trong khi code, ko chỉ Javascript mà còn ở tất cả các ngôn ngữ khác. Việc sử dụng toán tử 3 ngôi sẽ giúp chúng ta rút ngắn được rất nhiều code.

const x = 100;
let result;
if (x < 1000) {
  result = "nhỏ hơn 1000";
} else {
  result = "lớn hơn hoặc bằng 1000";
}

Ta có thể rút ngắn đoạn code trên thành:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

2. Rút gọn khai báo biến

Thường thì chúng ta có thói quen khai báo mỗi biến ở một dòng

let x;
let y;
let z = 3;

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 biến:

let x, y, z = 3;

3. Rút gọn toán tử so sánh ngang bằng trong

let x;
let y;
let z = 3;

9

Khi điều kiện là so sánh ngang bằng 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 ===

let a;
if (a === true) {
// làm gì đó
}

Ta có thể thay bằng:

let a;
if (a) {
// làm gì đó
}

Hoặc trong trường hợp cần so sánh với

let x, y, z = 3;

0

let a;
if (!a) {
// làm gì đó
}

4. Rút gọn vòng lặp

let x, y, z = 3;

1

Thay vì:

for (let i = 0; i < sampleArr.length; i++)

ta có thể rút gọn thành:

for (let item in sampleArr)

5. Sử dụng số thực dấu phẩy động

Để biểu diễn các số lớn lên tới hàng triệu, hàng tỉ (dạo này thấy Việt Nam xây cái gì cũng nghìn tỉ với chục nghìn tỉ, nhiều số 0 quá chả đếm nổi -_-), 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. Thay vì:

for (let i = 0; i < 100000; i++) {}

ta có thể rút gọn thành:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

0

Giá trị các biểu thức sau đều là

let x, y, z = 3;

2:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

1

6. 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. Thay vì

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

2

có thể dùng cú pháp

let x, y, z = 3;

3 để khai báo function:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

3

7. Rút gọn khi gán chuỗi nhiều dòng cho biến

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

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

4

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

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

5

8. Sử dụng Array.find()

Nếu bạn đã từng phải viết hàm tìm kiếm bằng Javascript thuần, hẳn sẽ nghĩ ngay đến việc dùng vòng lặp

let x, y, z = 3;

1 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

let x, y, z = 3;

5 sẽ giúp cho việc tìm phần tử trong array ngắn gọn hơn. Thay vì

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

6

ta có thể rút gọn thành:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

7

9. Sử dụng Obj['key']

Để get property của object trong Javascript ngoài cách dùng

let x, y, z = 3;

6 còn có thể viết

let x, y, z = 3;

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

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

8

Đ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

let x, y, z = 3;

8,

let x, y, z = 3;

9. Để 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:

const x = 100;
const result = (x < 1000) ? "nhỏ hơn 1000" :  "lớn hơn hoặc bằng 1000";

9

Giờ thì hàm

let a;
if (a === true) {
// làm gì đó
}

0 đã tổng quát hơn và có khả năng tái sử dụng nhờ cách gọi property

let x, y, z = 3;

7

10. Sử dụng 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. 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ó cú pháp là 3 dấu chấm ...

Spread Operator với array

let x;
let y;
let z = 3;

0

Ngắn gọn hơn:

let x;
let y;
let z = 3;

1

Không như hàm

let a;
if (a === true) {
// làm gì đó
}

2, 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:

let x;
let y;
let z = 3;

2

Spread operator trong gọi hàm:

Nếu có 1 hàm như sau:

let x;
let y;
let z = 3;

3

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

let x;
let y;
let z = 3;

4

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

let x;
let y;
let z = 3;

5

Hoặc có cách khác hay hơn nếu chúng ta ko biết rõ biến

let a;
if (a === true) {
// làm gì đó
}

3 dài bao nhiêu với Function.prototype.apply

let x;
let y;
let z = 3;

6

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

let x;
let y;
let z = 3;

7

Kết luận

Trên đây mình đã 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. Hy 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.