小于或等于 (<=)

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

小于或等于 (<=) 运算符返回 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 <= yx > y 都为 false

  • 如果其中一个操作数被转换为 BigInt,而另一个被转换为无法转换为 BigInt 值的字符串(当传递给BigInt()时会抛出语法错误)。
  • 如果其中一个操作数被转换为 NaN。(例如,无法转换为数字的字符串,或 undefined。)

此外,x <= yy 之前将 x 强制转换为原始值,而 y < xx 之前将 y 强制转换为原始值。因为强制转换可能会产生副作用,所以操作数的顺序可能很重要。

x <= y 通常等价于 x < y || x == y,除了少数情况

  • xy 中的一个为 null,而另一个不是 null 并且在强制转换为数字时变为 0(包括 00nfalse"""0"new Date(0) 等):x <= ytrue,而 x < y || x == yfalse
  • xy 中的一个为 undefined,而另一个是 nullundefined 之一时:x <= yfalse,而 x == ytrue
  • xy 是同一个对象,但在小于运算符的第一步之后变为 NaN 时(例如 new Date(NaN)):x <= yfalse,而 x == ytrue
  • xy 是不同的对象,但在小于运算符的第一步之后变为相同的值时:x <= ytrue,而 x < y || x == yfalse

示例

字符串与字符串比较

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

浏览器兼容性

另见