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