Xem thảo luận Cải thiện bài viết Lưu bài viết Xem thảo luận Cải thiện bài viết Lưu bài viết Example: Bất bình đẳng nghiêm ngặt sẽ không chuyển đổi các loại dữ liệu.
Ví dụ 1!
function
NotEqual[val] {
if
[val != 1] {
____10
if[ '5' != 5 ]{
return false;
}else{
return true;
}
1if[ '5' != 5 ]{
return false;
}else{
return true;
}
2
2
2
if[ '5' != 5 ]{
return false;
}else{
return true;
}
4if[ '5' != 5 ]{
return false;
}else{
return true;
}
5 if[ '5' != 5 ]{
return false;
}else{
return true;
}
6
____10
if[ '5' != 5 ]{
return false;
}else{
return true;
}
9if[ '5' != 5 ]{
return false;
}else{
return true;
}
2function
6
if
9
____10
if[ '5' != 5 ]{
return false;
}else{
return true;
}
1if[ '5' != 5 ]{
return false;
}else{
return true;
}
2
2
2
if[ '5' != 5 ]{
return false;
}else{
return true;
}
4if[ '5' != 5 ]{
return false;
}else{
return true;
}
5 if[ '5' != 5 ]{
return false;
}else{
return true;
}
6
____10
if[ '5' != 5 ]{
return false;
}else{
return true;
}
9if[ '5' != 5 ]{
return false;
}else{
return true;
}
2function
5function
6 function
7
function
5function
9 NotEqual[val] {
0
function
5NotEqual[val] {
2 NotEqual[val] {
3NotEqual[val] {
4NotEqual[val] {
5
function
5NotEqual[val] {
7 NotEqual[val] {
8NotEqual[val] {
4NotEqual[val] {
5
function
5
2 NotEqual[val] {
3
44
function
5
7 NotEqual[val] {
8
4NotEqual[val] {
5
if
7
Output:
function
5if
2 if
3
function
5if
5 if
6
if
8 sẽ chỉ kiểm tra giá trị bất kể loại toán hạng. Nhưng if
9 được sử dụng để so sánh cả giá trị & loại 2 toán hạng đang được so sánh với nhau.
Khi so sánh độ dài của các mảng, rõ ràng cả hai đều là số nguyên nên không cần phải so sánh các loại của chúng. Nhưng để so sánh các yếu tố trong mảng các loại của chúng rất quan trọng. Ví dụ: giả sử so sánh chuỗi 5 và số nguyên 5:
if[ '5' !== 5 ]{
return false
}else{
return true;
}
Đoạn trích trên sẽ trả về sai vì hai toán hạng là loại khác nhau. Nhưng điều này không thể bị bắt bởi if
8, ý tôi là:
if[ '5' != 5 ]{
return false;
}else{
return true;
}
sẽ trả về đúng.
Theo nguyên tắc thông thường, hãy nhớ rằng:
JavaScript có cả so sánh bình đẳng nghiêm ngặt và chuyển đổi kiểu. Đối với bình đẳng nghiêm ngặt, các đối tượng được so sánh phải có cùng loại và:
Hai chuỗi hoàn toàn bằng nhau khi chúng có cùng một chuỗi các ký tự, cùng độ dài và cùng một ký tự ở các vị trí tương ứng.
Hai số hoàn toàn bằng nhau khi chúng bằng số [có cùng một giá trị số]. Nan không bằng bất cứ điều gì, kể cả Nan. Các số không tích cực và tiêu cực bằng nhau.
Hai toán hạng boolean hoàn toàn bằng nhau nếu cả hai đều đúng hoặc cả hai đều sai.
Hai đối tượng hoàn toàn bằng nhau nếu chúng đề cập đến cùng một đối tượng.
Các loại NULL và không xác định là == [nhưng không ===]. [I E. [Null == không xác định] là đúng nhưng [null === không xác định] là sai]
Trích dẫn từ: //stackoverflow.com/a/523647