小于或等于 (<=)
**小于或等于 (<=
)** 运算符如果左操作数小于或等于右操作数则返回 true
,否则返回 false
。
试试看
语法
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 语言规范 # sec-relational-operators |
浏览器兼容性
BCD 表格仅在浏览器中加载