Câu 1:
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
Câu 2:
Câu hỏi
Làm thế nào để swap biến mà không dùng biến tạm? Ví dụ ta có biến a = 3
và b = 5
, hoán đổi thành a = 5
và b = 3
. Để làm bài này, ta sử dụng Destructuring Assignment.
Destructuring Assignment
Destructuring Assignment là cú pháp giúp ta unpack giá trị phần tử của một array hoặc thuộc tính của một object và gán nó vào biến. Ví dụ:
let one, two;
[one, two] = [1, 2]
console.log(one) // 1
console.log(two) // 2
Đáp án
Để swap biến đầu tiên ta khai báo biến a và b sau đó để nó trong một array. Dùng Destructuring Assignment để gán giá trị ngược lại cho hai biến:
let a = 3;
let b = 5;
[b, a] = [a, b]
console.log(a) // 5
console.log(b) // 3
Cập nhật lần cuối: 23:04:32 08/31/2023