Tại sao chúng ta sử dụng == trong javascript?
Nếu bạn không chắc sự khác biệt giữa == và === trong JavaScript là gì, thì bạn không đơn độc. Nhiều người gặp khó khăn với việc bạn nên sử dụng toán tử nào trong hai toán tử JavaScript này vì vậy đừng cảm thấy tồi tệ khi bạn không biết sự khác biệt. Đầu tiên, chúng ta cần hiểu toán tử là gì, cũng như cách chúng hoạt động trong JavaScript
Chính xác thì “==” làm gì?Trong JavaScript, toán tử “==” là toán tử so sánh. Điều này có nghĩa là bạn có thể thực hiện các bài kiểm tra logic để xem liệu một thứ có bằng một thứ khác không. Kết quả sẽ luôn trả về true hoặc false Show
Với “==”, JavaScript không quan tâm bạn chuyển loại dữ liệu nào (chuỗi hay số nguyên) miễn là nội dung mà bạn cung cấp cho nó phù hợp const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)3 “===” khác với “==” như thế nào?Toán tử “===” so sánh cả nội dung và loại , whereas “==” compares only content. JavaScript counts anything that is in between the two quotation marks as a chuỗi . Trước đó tôi đã đề cập rằng chúng ta sẽ sử dụng các số “55” và 55, ngoại trừ, “55” không phải là số nguyên, nó là một chuỗi, trong khi 55 là số nguyên because it is not encapsulated by quotation marks. const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)4 Ví dụ: điều này có nghĩa là nếu bạn có các số 55 và “55” và thử so sánh chúng với toán tử “===” thì nó sẽ không chỉ so sánh nội dung của hai dữ liệu hoặc biến mà bạn chuyển đến . Trong trường hợp này, nó sẽ trả về false, vì một chuỗi không cùng kiểu dữ liệu với một số nguyên. typeof variable or data it is. In this case, it would return false, because a string is not the same data type as an integer. Làm thế nào tôi có thể so sánh == vs. === của riêng tôi?Trả lời. Tìm hiểu Công cụ dành cho nhà phát triển của Chrome. DevTools (còn được gọi là Trình kiểm tra web) là người bạn tốt nhất của nhà phát triển web. Chúng cho phép bạn chỉnh sửa bất kỳ trang web cục bộ nào trong thời gian thực. Và chúng cho phép bạn sử dụng tính năng bảng điều khiển của chúng để thực hiện kiểm tra logic, viết các hàm đơn giản và hơn thế nữa. Hãy xem Hướng dẫn DevTools của Chrome này nếu bạn muốn tìm hiểu thêm. Cách tốt nhất để kiểm tra == vs. === bằng JavaScript
Bạn thậm chí có thể kiểm tra JavaScript của mình chỉ bằng cách sử dụng các biến. Chỉ cần xóa bảng điều khiển của bạn bằng cách nhấp chuột phải, sau đó nhấn “Xóa bảng điều khiển”, sau đó dùng thử Vậy còn. = toán tử và. ==?Bạn cũng có thể so sánh nếu một cái gì đó là “. =” (không bằng) cái gì khác, và nếu cái gì đó là “. ==” (hoàn toàn không bằng) cái gì khác Khi kiểm tra nếu “55”. == 55 với. ==, câu trả lời trả về sẽ đúng vì chuỗi “55” không hoàn toàn bằng số nguyên 55. Hãy chắc chắn tìm hiểu về bảng điều khiển bằng cách sử dụng các loại dữ liệu khác nhau cho đến khi bạn hiểu nó một cách khoa học, nếu bạn vẫn còn bối rối thì hãy nhớ xem Các toán tử so sánh của Mozilla< . Sau đó, khi bạn đã sẵn sàng, hãy tận dụng những siêu năng lực mới học được của bạn về tính trung thực của JavaScript để tham gia các cuộc đua trong page which goes into further detail. Then when you are ready, take your newly learned superpowers of JavaScript truthiness to the races in the Trò chơi trên bàn bình đẳng JavaScript. Suy nghĩ cuối cùngCảm ơn bạn đã dành thời gian đọc một chút về toán tử và toán hạng trong JavaScript. Nếu bạn là người mới bắt đầu hoặc người đã biết một số điều cơ bản và muốn tìm hiểu thêm về ngôn ngữ JavaScript, hãy nhớ xem Một tháng Trong JavaScript, sự khác biệt giữa toán tử == và toán tử === là cách so sánh được thực hiện
Một cách tuyệt vời để thấy điều này là so sánh một số và một chuỗi đại diện cho cùng một số console.log("1" == 1) // true console.log("1" === 1) // false
Hóa ra, toán tử == chuyển đổi các so sánh thành một loại phổ biến trước khi thực hiện so sánh Một từ ưa thích cho việc chuyển đổi là ép buộc kiểu ngầm định Trước khi tìm hiểu chi tiết về == và === trong JavaScript, hãy thảo luận ngắn gọn về ép buộc kiểu ẩn Trong hướng dẫn này, bạn học
Loại ép buộc trong JavaScriptTrong JavaScript, ép kiểu đề cập đến việc thay đổi kiểu dữ liệu Chẳng hạn, chuyển đổi một chuỗi thành một số là kiểu ép buộc Trong JavaScript, kiểu ép buộc chỉ có thể được sử dụng để biến các giá trị thành
Bạn không thể ép buộc một đối tượng theo bất kỳ loại nào khác, chẳng hạn như chức năng hoặc đối tượng Trong JavaScript, kiểu ép buộc có thể là kiểu
Hãy dành một chút thời gian để hiểu ý nghĩa của chúng Ép buộc loại rõ ràngÉp buộc kiểu rõ ràng, như tên cho thấy, có nghĩa là thực hiện ép buộc kiểu rõ ràng Theo thuật ngữ của giáo dân, điều này có nghĩa là chuyển đổi thủ công loại giá trị Thông thường, điều này có nghĩa là sử dụng hàm tích hợp sẵn, chẳng hạn như String(), Number() hoặc Boolean() Chẳng hạn, hãy chuyển đổi một chuỗi thành một số và thêm một số khác vào chuỗi đó const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10) đầu ra 110 Nếu bạn không chuyển đổi chuỗi thành một số, bạn sẽ không thể tính tổng nó bằng một số khác Bây giờ, hãy nói về ép buộc kiểu ẩn, nghĩa là ép buộc kiểu tự động diễn ra dưới mui xe Ép buộc kiểu ẩnTrong JavaScript, ép buộc kiểu ẩn có nghĩa là một giá trị được tự động chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác Từ ẩn ý đề cập đến nó xảy ra dưới mui xe Ép buộc kiểu ẩn chỉ diễn ra nếu bạn cố gắng thực hiện một thao tác trên hai toán hạng thuộc các kiểu khác nhau Chẳng hạn, nếu bạn so sánh hai giá trị của một loại khác nhau, thì kiểu ép buộc ẩn sẽ chuyển đổi các giá trị thành kiểu Số. Sau đó, nó so sánh các giá trị số Dưới đây là một số ví dụ "1" == 1 // 1 == 1 --> true true == "true" // true == NaN --> false "0" == false // 0 == 0 --> true Bây giờ bạn đã hiểu cách hoạt động của tính năng ép kiểu ẩn trong JavaScript Điều này cũng cho bạn một cái nhìn thoáng qua về cách toán tử == so sánh các giá trị trong JavaScript Tiếp theo, hãy nói về toán tử == Toán tử bình đẳng lỏng lẻo (==)Trong JavaScript, toán tử bằng lỏng (==) so sánh lỏng lẻo hai giá trị Nếu bạn so sánh hai giá trị của các loại dữ liệu khác nhau, thì toán tử == ngầm ép cả hai giá trị thành số Do đó, một toán tử đẳng thức lỏng lẻo có thể trả về true ngay cả khi các loại giá trị được so sánh không khớp Ví dụ "1" == 1 // true true == "true" // false "0" == false // true Nhưng điều này đôi khi có thể là vấn đề Thay vì so sánh lỏng lẻo các giá trị, bạn sẽ có thể thực hiện so sánh chặt chẽ hơn để đảm bảo các giá trị cùng loại trước khi so sánh Đây là lúc toán tử đẳng thức nghiêm ngặt (===) xuất hiện Toán tử bình đẳng nghiêm ngặt (===)Toán tử đẳng thức nghiêm ngặt (===) không hoàn toàn ép buộc các giá trị được so sánh Theo thuật ngữ của giáo dân, nó không chuyển đổi các phần tử được so sánh thành cùng một kiểu dữ liệu Do đó, nếu các giá trị được so sánh đại diện cho các loại dữ liệu khác nhau, phép so sánh nghiêm ngặt sẽ tự động trả về giá trị sai Vì vậy, một chuỗi không thể hoàn toàn bằng một số, ví dụ Dưới đây là một số ví dụ "1" === 1 // false true === "true" // false "0" === false // false 2 === 2 // true "A" === "A" // true Hãy đến với phần thú vị. Sự khác biệt giữa == và === trong JavaScript là gì? == so với === trong JavaScriptVới tất cả những gì bạn đã học cho đến nay, việc hiểu sự khác biệt giữa == và === trở nên tầm thường
Do đó, nếu bạn cố gắng so sánh các giá trị thuộc loại khác nhau, toán tử == có thể trả về giá trị true, nhưng toán tử === thì không thể Đến thời điểm này, bạn đã thấy các ví dụ với số, chuỗi và booleans Các kiểu dữ liệu này thuộc về một nhóm được gọi là kiểu nguyên thủy trong JavaScript Tuy nhiên, có một nhóm kiểu dữ liệu hoàn toàn khác trong JavaScript được gọi là kiểu tham chiếu (hoặc đối tượng), chẳng hạn như mảng So sánh các loại tham chiếu với các toán tử == và === có một ý nghĩa khác, điều quan trọng là phải hiểu So sánh các loại tham chiếu với các loại nguyên thủyTrong JavaScript, các kiểu dữ liệu là kiểu nguyên thủy hoặc kiểu tham chiếu Ví dụ về các kiểu nguyên thủy là số, chuỗi và booleans Ví dụ về các loại tham chiếu là mảng, hàm và các bộ sưu tập khác Chúng ta hãy xem cách các toán tử so sánh hoạt động với cả kiểu nguyên thủy và kiểu tham chiếu chi tiết hơn Các loại nguyên thủyCác loại nguyên thủy của JavaScript là
Tất cả các kiểu nguyên thủy xác định giá trị bất biến Nói cách khác, bạn không thể trực tiếp thay đổi giá trị của các kiểu nguyên thủy. Thay vào đó, bạn cần tạo một kiểu nguyên thủy mới Hãy chứng minh tính bất biến bằng một ví dụ đơn giản let a = 1 a = 2 Trong đoạn mã này, bạn thực sự không trực tiếp thay đổi đối tượng số từ 1 thành 2 Thay vào đó, bạn tạo một đối tượng Số hoàn toàn mới và đặt biến tham chiếu cho nó So sánh với các loại nguyên thủyBây giờ, hãy quay lại với các toán tử so sánh == và === Như bạn đã biết, có sự khác biệt giữa các toán tử == và === khi so sánh các kiểu nguyên thủy
Khi so sánh các đối tượng kiểu tham chiếu, các toán tử so sánh có một ý nghĩa hoàn toàn khác Mặc dù vậy, sự khác biệt giữa các toán tử == và === vẫn còn Các loại tài liệu tham khảoTrong JavaScript, các đối tượng là tập hợp các thuộc tính có thể thay đổi không có kích thước cố định Đối tượng JavaScript còn được gọi là kiểu tham chiếu Loại tham chiếu có nghĩa là các đối tượng được truyền bằng tham chiếu trong mã Ví dụ về các loại tham chiếu là mảng, hàm và các loại bộ sưu tập khác Để minh họa các kiểu tham chiếu, hãy tạo một mảng, sao chép nó vào một biến mới và thay đổi mảng ban đầu let a = [1, 2, 3] let b = a a[0] = 1000 console.log(a) // [ 1000, 2, 3 ] console.log(b) // [ 1000, 2, 3 ] Như bạn có thể thấy, việc thay đổi phần tử đầu tiên trong mảng ban đầu a cũng ảnh hưởng đến mảng “được sao chép” b Điều này là do const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)2 không thực sự tạo một bản sao của mảng. Thay vào đó, nó tạo một tham chiếu mới đến mảng ban đầu Logic tương tự này áp dụng cho tất cả các đối tượng JavaScript khác lưu trữ các bộ sưu tập thuộc tính So sánh với các loại tham chiếuVới các kiểu tham chiếu, các toán tử so sánh (== và ===) kiểm tra xem hai đối tượng có tham chiếu cùng một đối tượng không Nói cách khác, bạn có thể sử dụng các toán tử so sánh để kiểm tra xem hai đối tượng có trỏ đến cùng một địa chỉ trong bộ nhớ không Để tôi chỉ cho bạn một ví dụ minh họa let a = [1, 2, 3] let b = [1, 2, 3] let c = a console.log(a === b) // false console.log(a === c) // true Bạn có thể thấy
Đây là một minh họa đằng sau hậu trường của điều trên Các mảng a và c tham chiếu cùng một đoạn bộ nhớ. Điều này xảy ra vì dòng mã này const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)0 Như bạn đã biết, thay vì sao chép, đoạn mã này tạo một tham chiếu mới gọi là c trỏ đến mảng ban đầu a Điều này thực sự quan trọng để hiểu, nhưng nó không được nói đến thường xuyên Chẳng hạn, điều này giải thích tại sao bạn không thể kiểm tra xem hai mảng có các phần tử bằng nhau hay không bằng cách sử dụng toán tử == hoặc ===. Để làm điều này, bạn cần lặp qua từng phần tử của mảng Sự khác biệt giữa toán tử == và === trong các kiểu tham chiếu cũng giống như trong các kiểu nguyên thủy
Bây giờ bạn không chỉ hiểu sự khác biệt giữa == và === là gì mà còn biết cách các toán tử so sánh hoạt động khác nhau trong các ngữ cảnh khác nhau Cuối cùng nhưng không kém phần quan trọng, hãy trả lời câu hỏi bạn nên sử dụng toán tử so sánh nào Tôi nên sử dụng toán tử so sánh nào. == hay ===?câu trả lời ngắn. Luôn sử dụng toán tử ba bằng === để so sánh trong JavaScript Toán tử == cố gắng thực hiện ép buộc kiểu, điều này có thể dẫn đến hành vi lạ trong mã của bạn Dưới đây là một số ví dụ về một số so sánh với == tạo ra kết quả không mong muốn const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)0 Nhưng khi so sánh với === thì tất cả những so sánh này đều cho kết quả hợp lý và có thể đoán trước được const numstr = "100" // Convert the string to number (explicit type coercion) const num = Number(numstr) console.log(num + 10)1 Để đảm bảo an toàn, hãy sử dụng toán tử === để so sánh Phần kết luậnHôm nay bạn đã học được sự khác biệt giữa toán tử == và === trong JavaScript là gì Tóm lại Để hiểu cách thức hoạt động của toán tử ==, bạn cần hiểu thế nào là ép buộc kiểu ngầm định Ép buộc kiểu ẩn có nghĩa là trình phân tích cú pháp JavaScript tự động chuyển đổi hai giá trị thành một kiểu chung để thực hiện thao tác trên chúng Ví dụ: để thêm một chuỗi vào một số, số đó cần được chuyển đổi thành chuỗi hoặc chuỗi thành số Với thông tin này, bạn có thể dễ dàng hiểu được sự khác biệt giữa toán tử == và === trong JavaScript là gì
Ngoài ra, điều quan trọng là phải hiểu rằng các toán tử so sánh == và === hoạt động hoàn toàn khác với các kiểu tham chiếu, chẳng hạn như mảng. Thay vì so sánh xem các phần tử có bằng nhau hay không, toán tử kiểm tra xem hai đối tượng có tham chiếu cùng một đối tượng trong bộ nhớ không Cố gắng sử dụng toán tử === càng nhiều càng tốt. Bằng cách này, bạn có thể tránh được "sự bất thường" liên quan đến việc sử dụng toán tử == Mục đích của toán tử == là gì?Toán tử đẳng thức (==) được sử dụng để so sánh hai giá trị hoặc biểu thức . Nó được sử dụng để so sánh các số, chuỗi, giá trị Boolean, biến, đối tượng, mảng hoặc hàm. Kết quả là TRUE nếu các biểu thức bằng nhau và FALSE nếu không.
Việc sử dụng == và === trong JavaScript là gì?=== — bình đẳng nghiêm ngặt (ba bằng) == — bình đẳng lỏng (bằng kép)
Bạn có nên sử dụng == trong JavaScript không?Lời khuyên dành cho những người mới bắt đầu sử dụng JavaScript là hãy quên hoàn toàn == và luôn sử dụng ===. Hóa ra quy tắc đó là phổ quát đúng
Tại sao == được sử dụng thay vì?Việc = có nghĩa là gì phụ thuộc vào ngữ cảnh. == luôn dùng để kiểm tra tính bình đẳng . trong hầu hết các trường hợp được sử dụng để thay thế cho |