2009-07-07 12 views
26

Có thể trùng lặp:
Javascript === vs == : Does it matter which “equal” operator I use?Khi nào bạn nên sử dụng === vs ==,! == vs! =, V.v. trong javascript?

sự khác biệt giữa === và ==, == và là gì == ... khi nào bạn nên sử dụng một và khi nào bạn nên sử dụng khác?

Matt

+4

Đây là bản dupe của khoảng 1000 câu hỏi –

+1

Bạn có thể đăng liên kết tới các câu hỏi khác không? Tôi luôn chắc chắn rằng tôi nhìn đầu tiên, rõ ràng là các tiêu đề không rõ ràng, đủ để được tìm thấy dễ dàng. Có thể có câu hỏi này cũng sẽ giúp hướng mọi người đi đúng hướng trong trường hợp họ không tìm kiếm chính xác. – Matt

+1

Suy nghĩ của tôi chính xác. Đây là một: http://stackoverflow.com/questions/359494/javascript-vs – GManNickG

Trả lời

32

=== là toán tử Identity và được sử dụng để kiểm tra giá trị và loại đó bằng nhau.

vì vậy ..

"3" == 3 // true 
"3" === 3 // false 
1 == true // true 
1 === true // false 
"1" == true // true 
"1" === true // false 

vì vậy khi bạn quan tâm đến giá trị và loại đều bình đẳng, hoặc không bằng nhà khai thác sử dụng nhận dạng === hay! ==

+0

đẹp và dứt khoát – annakata

+0

"1" == đúng .. cái gì? Tôi nghĩ rằng tôi biết những quy tắc này nhờ đánh dấu –

+0

@ KissKoppány nếu bạn bối rối, đó là vì 1 và 0 là các toán tử logic. == có loại chuyển đổi, vì vậy '1' == 1 == đúng, '0' == 0 == sai. === KHÔNG làm loại chuyển đổi. Nói chung nó tốt hơn để đi với === trừ khi bạn mong đợi vars của bạn để typechange thường xuyên mà là kỳ quái (với tôi ít nhất) – Prefix

8

Các "bình thường" == nhà khai thác trong javascript thực hiện kiểu ép buộc, và cố gắng hết sức mình để làm những việc như đối xử với một chuỗi như số điện thoại hoặc đối tượng như là một chuỗi nơi yêu cầu. Các toán tử === dài hơn sẽ không phải thực hiện loại cưỡng chế, mà là một so sánh nghiêm ngặt trong loại.

2

===!== cũng giống như ==!=, nhưng bổ sung kiểm tra cho các loại biến.