1. 字符串比较:
在 JavaScript 中,字符串比较是基于字符的 Unicode 值进行的。比较操作会逐个比较字符串中的字符,直到找到不同的字符或比较完整个字符串。
let str1 = "apple";
let str2 = "banana";
console.log(str1 < str2); // true,"apple" 的 Unicode 值小于 "banana" 的 Unicode 值
2. 不同类型间的比较:
在使用相等性运算符(==
、===
)进行比较时,如果比较的两个值的类型不同,JavaScript 会尝试进行类型转换。全等性比较 (===
) 不进行类型转换,而相等性比较 (==
) 会进行一定程度的类型转换。
a. 相等性比较 (==
):
let num = 5;
let str = "5";
console.log(num == str); // true,会进行类型转换
在上述例子中,num
被转换为字符串类型,然后与 str
进行比较。
b. 全等性比较 (===
):
let num = 5;
let str = "5";
console.log(num === str); // false,类型不同,不进行类型转换
3. 对 null 和 undefined 进行比较:
-
相等性比较 (
==
):-
null
和undefined
相等。let a = null; let b = undefined; console.log(a == b); // true
-
-
全等性比较 (
===
):-
null
和undefined
不全等。let a = null; let b = undefined; console.log(a === b); // false
-
4. null 和 0 的比较:
-
相等性比较 (
==
):-
null
和0
不相等。let a = null; let b = 0; console.log(a == b); // false
-
-
全等性比较 (
===
):-
null
和0
不全等。let a = null; let b = 0; console.log(a === b); // false
-
5. 特立独行的 undefined:
- 与任何值的比较:
-
undefined
与任何值(除了null
)都不相等,包括与自身。let a = undefined; let b = 5; console.log(a == b); // false console.log(a === a); // true
-
在比较值时,最好使用全等性比较 (===
),因为它不会进行类型转换,更直观地反映比较的严格性。理解 JavaScript 的比较规则对避免一些潜在的陷阱和错误非常重要。