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ả:

plain
3

Giả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 (true hoặc false), giá trị boolean sẽ được chuyển đổi sang kiểu số (true thành 1, false thành 0).
  • Ở đây, 2 + true thực chất là 2 + 1, do đó kết quả là 3.

2. console.log([] == ![]);

Kết quả:

plain
true

Giả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ành 0.
    • false khi chuyển sang số cũng là 0.
  • 0 == 0 là đúng, nên kết quả của biểu thức là true.

3. console.log(NaN === NaN);

Kết quả:

plain
false

Giải thích:

  • NaN (Not-a-Number) là một giá trị đặc biệt trong JavaScript.
  • Theo chuẩn IEEE 754, NaN không bằng bất kỳ giá trị nào, kể cả chính nó.
  • Do đó, biểu thức NaN === NaN sẽ trả về false.
  • Để kiểm tra một giá trị có phải là NaN hay không, chúng ta sử dụng Number.isNaN(value).

4. console.log('5' - - '3');

Kết quả:

plain
8

Giải thích:

  • Chuỗi '5''-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ả:

plain
true

Giải thích:

  • Trong JavaScript, nullundefined là 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à false vì chúng có kiểu dữ liệu khác nhau (null là kiểu object, còn undefined là 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! 🚀