小于或等于 (<=)

如果左操作数小于或等于右操作数,则小于或等于 (<=) 运算符返回 true,否则返回 false

¥The less than or equal (<=) operator returns true if the left operand is less than or equal to the right operand, and false otherwise.

Try it

语法

¥Syntax

js
x <= y

描述

¥Description

使用与 少于 运算符相同的算法来比较操作数,交换操作数并将结果取反。x <= y 一般等价于 !(y < x),除了 x <= yx > y 都是 false 的两种情况:

¥The operands are compared using the same algorithm as the Less than operator, with the operands swapped and the result negated. x <= y is generally equivalent to !(y < x), except for two cases where x <= y and x > y are both false:

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

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

¥In addition, x <= y coerces x to a primitive before y, while y < x coerces y to a primitive before x. Because coercion may have side effects, the order of the operands may matter.

x <= y 一般等同于 x < y || x == y,除了少数情况:

¥x <= y is generally equivalent to x < y || x == y, except for a few cases:

  • 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

示例

¥Examples

字符串与字符串的比较

¥String to string comparison

js
"a" <= "b"; // true
"a" <= "a"; // true
"a" <= "3"; // false

字符串与数字的比较

¥String to number comparison

js
"5" <= 3; // false
"3" <= 3; // true
"3" <= 5; // true

"hello" <= 5; // false
5 <= "hello"; // false

数字与数字的比较

¥Number to Number comparison

js
5 <= 3; // false
3 <= 3; // true
3 <= 5; // true

数字与 BigInt 比较

¥Number to BigInt comparison

js
5n <= 3; // false
3 <= 3n; // true
3 <= 5n; // true

比较布尔值、null、未定义、NaN

¥Comparing Boolean, 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

规范

Specification
ECMAScript Language Specification
# sec-relational-operators

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看