小於或等於 (<=)
小於或等於 (<=) 運算子返回 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 |
瀏覽器相容性
載入中…