== và === “đép” nên “yêu” ai ?

Khi bắt đầu tìm hiểu ngôn ngữ javascript, nếu bạn gặp khó khăn trong việc lựa chọn == hay === khi so sánh điều kiện. Bài viết này chính là bí kíp dành cho bạn :)). Nào chúng ta cùng tìm hiểu tại sao nhé!

Chuyện kể rằng: Ngày nảy ngày nay, gia đình javascript có 2 cô con gái xinh đẹp, thùy mị, đang độ tuổi “cập kê” là =====. Bỗng 1 ngày nọ có chàng Đép (dev) làng bên đi ngang qua bị thu hút bởi vẻ đẹp của cả 2 bàn ngỏ ý muốn “tìm hiểu” và kết duyên với 1 trong 2 nàng. Tuy nhiên, chàng “Đép” (dev) lại chưa biết gì về cả 2 mà chỉ nghe qua mấy bà hàng xóm C, C++, Java… kể lại. Vốn không mấy tin chuyện nghe đồn, “Đép” (dev) nhà ta bèn gặp anh “Gu-go-le” (google, gọi tắt là “Gu”) nổi tiếng “quan hệ rộng”, hiểu biết sâu để xin cách làm quen 2 nàng. Nghe “Đép” (dev) kể xong ngọn nguồn, anh “Gu” vỗ đùi đèn đét phấn khởi nói: “2 em nó nổi tiếng vậy mà giờ chú mới biết à. Kém lắm! Kém lắm!” và vỗ ngực nói: “Nếu không biết thì ngồi đây, làm ấm chè, để anh nói cho mà nghe”.

Khi so sánh == và === ta thường bắt gặp tình huống khá là “quái” như sau.

“Đép” tròn xoe mắt hỏi tiếp: “Sao lại có sự khác biệt như vậy hả anh ?”. Lão “Gu” ha hả cười.

  • Khi so sánh, === chỉ trả về true nếu như cả hai toán hạng đều cùng một kiểu và có cùng giá trị. Nếu so sánh khác kiểu, kết quả sẽ trả về false.
  • Khi so sánh, == sẽ cố gắng chuyển đổi kiểu của toán hạng, nếu như hai toán hạng có kiểu khác nhau, và chỉ bắt đầu so sánh sự bằng nhau khi đã thực hiện đổi kiểu xong. Nếu kiểu khác nhau, một trong hai, hoặc cả hai toán hạng sẽ được chuyển về một kiểu chung, hay còn gọi là kiểu trung gian. Như vậy so sánh đầu tiên sẽ là convertToNumber(“3”) === 3.
  • Đấy là so sánh chuỗi với số, khá là dễ hiểu phải không. Bây giờ đến với 1 trường hợp khác “rắc rối” hơn nhé.

Nghe đến đây, anh “Đép” trầm trồ và liên tục khen ngợi, nịnh hót lão “Gu” tài cao, hiểu rộng. Lão “Gu” được khen sướng tít cả mắt, hãnh dọng: “Giờ thì chú biết chọn ai mà yêu rồi nhé! “

Qua câu chuyện vui ở trên, các bạn đã có lựa chọn khi so sánh sử dụng ===== rồi chứ. Nếu có ý kiến gì hãy comment bên dưới bài viết để mọi người cùng trao đổi nhé.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *