Theo tài liệu Mozilla trên Javascript Comparison Operators
Nếu hai toán hạng không phải là cùng loại, JavaScript chuyển đổi toán hạng sau đó áp dụng nghiêm ngặt so sánh. Nếu toán hạng là số hoặc boolean, các toán hạng là được chuyển đổi thành số; nếu một trong hai toán hạng là một chuỗi, một trong những khác là chuyển thành một chuỗi
gì thực sự xảy ra là các dây đang được chuyển đổi sang số. Ví dụ:
1 == '1'
trở thành 1 == Number('1')
trở thành 1 == 1
: true
Sau đó, hãy thử điều này: 1 == '1.'
trở thành 1 == Number('1.')
trở thành 1 == 1
: true
Nếu họ đã trở thành chuỗi, sau đó bạn sẽ nhận được '1' == '1.'
, đó sẽ là sai .
Nó chỉ như vậy sẽ xảy ra rằng Number('') == 0
, do đó 0 == ''
là đúng
1 rất đẹp - bạn có biết cách động cơ quyết định mà datatype để chuyển đổi? Rõ ràng chuyển đổi 0 thành một chuỗi sẽ không có kết quả tương tự. –
Điều này sai - '' sẽ được chuyển thành 0, không phải là boolean 'false' – Christoph
Không, tôi không chắc chắn. Tôi sẽ nghi ngờ rằng đó là một loại số, hoặc một diễn viên boolean. – davethegr8