Chào bạn! JavaScript là một ngôn ngữ lập trình mạnh mẽ nhưng cũng đầy những đặc điểm thú vị và khó hiểu. Trong bài viết này, chúng ta sẽ cùng khám phá một số câu hỏi hóc búa thường gặp trong phỏng vấn JavaScript kèm theo lời giải thích chi tiết.
1. console.log(2 + true);
Kết quả:
3Giải thích:
- Trong JavaScript, khi thực hiện toán tử
+giữa một số (number) và một giá trị boolean (truehoặcfalse), giá trị boolean sẽ được chuyển đổi sang kiểu số (truethành1,falsethành0). - Ở đây,
2 + truethực chất là2 + 1, do đó kết quả là3.
2. console.log([] == ![]);
Kết quả:
trueGiải thích:
- Biểu thức
![]sẽ được tính trước. Mảng rỗng[]là một giá trị truthy, vì vậy![]sẽ làfalse. - Khi so sánh
[] == false, JavaScript sẽ chuyển đổi cả hai về cùng kiểu:[]khi chuyển sang số sẽ thành0.falsekhi chuyển sang số cũng là0.
- Vì
0 == 0là đúng, nên kết quả của biểu thức làtrue.
3. console.log(NaN === NaN);
Kết quả:
falseGiải thích:
NaN(Not-a-Number) là một giá trị đặc biệt trong JavaScript.- Theo chuẩn IEEE 754,
NaNkhông bằng bất kỳ giá trị nào, kể cả chính nó. - Do đó, biểu thức
NaN === NaNsẽ trả vềfalse. - Để kiểm tra một giá trị có phải là
NaNhay không, chúng ta sử dụngNumber.isNaN(value).
4. console.log('5' - - '3');
Kết quả:
8Giải thích:
- Chuỗi
'5'và'-3'sẽ được chuyển đổi sang kiểu số khi sử dụng toán tử-. - Biểu thức thực tế sẽ trở thành
5 - (-3), tức là5 + 3. - Do đó, kết quả cuối cùng là
8.
5. console.log(null == undefined);
Kết quả:
trueGiải thích:
- Trong JavaScript,
nullvàundefinedlà hai giá trị đặc biệt. - Khi sử dụng toán tử
==, chúng được coi là bằng nhau (true). - Tuy nhiên, nếu dùng toán tử
===, kết quả sẽ làfalsevì chúng có kiểu dữ liệu khác nhau (nulllà kiểu object, cònundefinedlà kiểu undefined).
Kết luận
Những câu hỏi trên chỉ là một phần nhỏ trong số những điều thú vị và đôi khi khó hiểu của JavaScript. Hiểu rõ về cách hoạt động của JavaScript không chỉ giúp bạn vượt qua các buổi phỏng vấn mà còn giúp viết mã hiệu quả hơn.
Bạn có thể luyện tập thêm nhiều câu hỏi JavaScript khác tại CodeTutHub! 🚀









