Phỏng vấn Javascript - Viết hàm kiểm tra số chẳn lẻ không dùng if else
Series các bài viết ngắn chia sẻ Tips Javascript giúp code nhanh và kiến thức phỏng vấn Javascript.
Câu hỏi
Viết một hàm khi ta truyền một số nếu là chẳn thì trả về even
, nếu là số lẻ thì trả về odd
, hàm không cần dùng if else? Để viết hàm này, ta sử dụng Bitwise Operator và Conditional (Ternary) Operator.
Bitwise Operator
Là toán tử cho phép ta thực thi phép toán thao tác dạng bit. Trong JS khi ta thực hiện toán tử Bitwise lên hai số thì nó chuyển hai số về dạng nhị phân và thực thi phép toán thao tác bit. Ví dụ 3 | 1 => 0011 | 0001 => 0011 => 3
. Toán tử Bitwise bao gồm: AND (&), OR (|), XOR (^), NOR (~) . Vậy tại sao ta lại đề cập Bitwise Operator ở đây? Vì ta có thể sử dụng Bitwise AND (&) cho việc kiểm tra số chẳn lẻ:
- Số chẳn thực thi Bitwise AND (&) với 1 trả về 0
- Số lẻ thực thi Bitwise AND (&) với 1 trả về 1
Ví dụ:
0 & 1 => 0000 & 0001 => 0
1 & 1 => 0001 & 0001 => 1
2 & 1 => 0010 & 0001 => 0
3 & 1 => 0011 & 0001 => 1
4 & 1 => 0100 & 0001 => 0
5 & 1 => 0101 & 0001 => 1
Tiếp theo kiểm tra nếu 1
thì trả về odd
, nếu 0
thì trả về even
Conditional (Ternary) Operator
Ta sử dụng Ternary Operator vì đề không cho dùng if else. Ternary Operator là cách viết rút gọn của if, nó chứa 3 phần tử trong một cú pháp: condition ? exprIfTrue : exprIfFalse
. Nếu condition
đúng thì giá trị exprIfTrue
được trả về, còn sai thì là exprIfFalse
. Ví dụ:
const age = 26;
const beverage = age >= 21 ? "Beer" : "Juice";
console.log(beverage); // "Beer"
Đáp án
Hàm kiểm tra chẳn lẻ:
function isEvenOrOdd(number) {
return number & 1 ? 'odd' : 'even'
}
isEvenOrOdd(0) // even
isEvenOrOdd(1) // odd
isEvenOrOdd(2) // even
isEvenOrOdd(3) // odd
Đáp án khác
Nếu bạn gặp trường hợp nhà phỏng vấn nói về Ternary Operator bản chất cũng là if else thì bạn có thể sửa thành cách sau đây. Hàm kiểm tra chẳn lẻ:
function isEvenOrOdd(number) {
return ["even", "odd"][numer % 2]
}
isEvenOrOdd(0) // even
isEvenOrOdd(1) // odd
isEvenOrOdd(2) // even
isEvenOrOdd(3) // odd
Frontend VN
Theo dõi FB hoặc Tiktok của Frontend VN để cập nhật kiến thức và tips về FE mỗi ngày 🥰.
All rights reserved