Javascirpt Quicktip - Những câu hỏi thường gặp khi phỏng vấn JS
1, Sự khác nhau giữa var và let?

Đây là câu hỏi mình hay gặp nhất , về mình tin rất nhiều ae sẽ toang nếu không trả lời được câu hỏi này. Sự khác nhau ở đây là phạm vi làm việc (level of scope). Với var là funtion-scoped và let là block-scoped. Ví dụ :


2, Sự khác nhau giữa == và === ?

Hầu hết ae sẽ trả lời == sẽ so sánh values và === sẽ check cả type của 2 vế. Nhưng rất tiếc câu trả lời này là không đúng, JS engine cho phép == ép type biến của vế bên phải theo type của vế bên trái. và === thì không cho phép điều này.


3, "this" là gì?

Câu trả lời mình hay gặp là "this" trỏ đến instance của 1 class khi được gọi bên trong body của class. Nhưng câu trả lời này là chưa đầy đủ. this tồn tại trong tất cả các function kể cả function đó không nằm trong class nào. Và this sẽ trỏ đến Object chứa cái function đang gọi đến this.


4, constructor function là gì?

Constructor function trong JS cũng không liên quan gì đến class , được gọi với new keyword và trả lại giá trị mà this chứa. Lưu ý là trong constructor function this không trỏ đến object bên ngoài.


5, Convert callback function thành Promise?


6, Kết quả của "a" == NaN?

False. Nếu JS được hiểu như một bài văn xuôi thì chúng ta có thể hiểu. a là 1 chữ cái, 1 chữ cái thì không thể 1 số (Not a Number). Nhưng JS không nghĩ vậy, muốn check a là NaN trong trường hợp này ae chỉ có thể sử dụng Number.isNaN(a)?

7, 0.1 + 0.2 === 0.3?

False. Điều này không chỉ JS bị mà ae có thể gặp trong hầu hết các ngôn ngữ khác. Và kết quả trong phép toán này là ... Ae có thể bật console để tự thưởng thức

8, Các type của biến trong JS?

- Boolean,
- Null,
- Undefined
- Number
- BigInt
- String
- Symbol

9, "strict" mode?

Hầu hết dự án mình đang tham gia bây giờ đều được yêu cầu enable "strict" mode trong code. Thêm "use strict"; vào đầu file JS. Strict mode bật lên, JS bắt lỗi nghiêm ngặt hơn như không thể dùng biến chưa khai báo. vv..

10, Output của đoạn code này?

undefined. Why? JS không yêu cầu ; ở cuối dòng code như một số ngôn ngữ khác. Trong trường hợp này JS sẽ tự động thêm ; đằng sau return ở dòng 2 vào cái dòng code từ 3 đến 5 sẽ chỉ là một Object