小于或等于 (<=)
小于或等于 (<=) 运算符返回 true,如果左操作数小于或等于右操作数,否则返回 false。
试一试
console.log(5 <= 3);
// Expected output: false
console.log(3 <= 3);
// Expected output: true
// Compare bigint to number
console.log(3n <= 5);
// Expected output: true
console.log("aa" <= "ab");
// Expected output: true
语法
js
x <= y
描述
操作数使用与小于运算符相同的算法进行比较,但操作数交换并结果取反。x <= y 通常等价于 !(y < x),除了两种情况,其中 x <= y 和 x > y 都为 false
- 如果其中一个操作数被转换为 BigInt,而另一个被转换为无法转换为 BigInt 值的字符串(当传递给
BigInt()时会抛出语法错误)。 - 如果其中一个操作数被转换为
NaN。(例如,无法转换为数字的字符串,或undefined。)
此外,x <= y 在 y 之前将 x 强制转换为原始值,而 y < x 在 x 之前将 y 强制转换为原始值。因为强制转换可能会产生副作用,所以操作数的顺序可能很重要。
x <= y 通常等价于 x < y || x == y,除了少数情况
- 当
x或y中的一个为null,而另一个不是null并且在强制转换为数字时变为 0(包括0、0n、false、""、"0"、new Date(0)等):x <= y为true,而x < y || x == y为false。 - 当
x或y中的一个为undefined,而另一个是null或undefined之一时:x <= y为false,而x == y为true。 - 当
x和y是同一个对象,但在小于运算符的第一步之后变为NaN时(例如new Date(NaN)):x <= y为false,而x == y为true。 - 当
x和y是不同的对象,但在小于运算符的第一步之后变为相同的值时:x <= y为true,而x < y || x == y为false。
示例
字符串与字符串比较
js
"a" <= "b"; // true
"a" <= "a"; // true
"a" <= "3"; // false
字符串与数字比较
js
"5" <= 3; // false
"3" <= 3; // true
"3" <= 5; // true
"hello" <= 5; // false
5 <= "hello"; // false
数字与数字比较
js
5 <= 3; // false
3 <= 3; // true
3 <= 5; // true
数字与 BigInt 比较
js
5n <= 3; // false
3 <= 3n; // true
3 <= 5n; // true
布尔值、null、undefined、NaN 的比较
js
true <= false; // false
true <= true; // true
false <= true; // true
true <= 0; // false
true <= 1; // true
null <= 0; // true
1 <= null; // false
undefined <= 3; // false
3 <= undefined; // false
3 <= NaN; // false
NaN <= 3; // false
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-relational-operators |
浏览器兼容性
加载中…