Câu hỏi phỏng vấn Javascript
Câu hỏi

So sánh ===== trong Javascript?

Câu trả lời

Trong JavaScript, việc hiểu rõ sự khác biệt giữa toán tử so sánh == (so sánh trừu tượng) và === (so sánh nghiêm ngặt) là rất quan trọng, vì nó ảnh hưởng đến cách giá trị được so sánh trong code của bạn.

So sánh trừu tượng (==)

Toán tử == so sánh hai giá trị sau khi thực hiện chuyển đổi kiểu dữ liệu (nếu cần), để chúng có thể được so sánh một cách công bằng. Nếu hai giá trị không cùng kiểu, JavaScript sẽ cố gắng chuyển đổi chúng sang một kiểu chung trước khi so sánh. Ví dụ, khi so sánh một số với một chuỗi, chuỗi sẽ được chuyển đổi thành một số trước khi thực hiện so sánh

So sánh nghiêm ngặt (===)

Ngược lại, toán tử === thực hiện so sánh nghiêm ngặt, nghĩa là nó sẽ không thực hiện chuyển đổi kiểu dữ liệu giữa hai giá trị được so sánh. Điều này có nghĩa là nếu hai giá trị có kiểu dữ liệu khác nhau, toán tử === sẽ ngay lập tức trả về false mà không cần xem xét giá trị cụ thể của chúng

Ví dụ

Sử dụng ==:

javascript Copy
console.log(3 == "3"); // true, vì "3" được chuyển đổi thành số trước khi so sánh
console.log(true == '1'); // true, vì '1' được chuyển đổi thành true

Sử dụng ===:

javascript Copy
console.log(3 === "3"); // false, vì một bên là số và một bên là chuỗi
console.log(true === '1'); // false, vì một bên là boolean và một bên là chuỗi

Khi nào sử dụng?

Nên sử dụng === (so sánh nghiêm ngặt) thay vì == (so sánh trừu tượng) trong hầu hết các trường hợp để tránh những kết quả không mong muốn do chuyển đổi kiểu dữ liệu tự động. Sử dụng === giúp code của bạn trở nên dễ đọc và dễ hiểu hơn, đồng thời giảm thiểu nguy cơ gặp phải lỗi logic do chuyển đổi kiểu dữ liệu không rõ ràng

Tóm lại, ===== đều là toán tử so sánh trong JavaScript nhưng hoạt động theo hai cách khác nhau. == sẽ chuyển đổi kiểu dữ liệu trước khi so sánh, trong khi === yêu cầu cả kiểu dữ liệu và giá trị phải giống nhau. Để viết code chính xác và dễ bảo trì, bạn nên sử dụng === trừ khi có một lý do chính đáng để sử dụng ==.

entry

entry

Gợi ý câu hỏi phỏng vấn

middle

Hạn chế của phương thức private trong JavaScript là gì?

middle

Bạn biết gì về AMD (Asynchronous Module Definition) và CommonJS trong Javascript?

middle

Con trỏ this trong javascript là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào