A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Less_than below:

小于(<) - JavaScript | MDN

小于(<)

Baseline Widely available

小于(<)运算符在左操作数比右操作数小时返回 true,否则返回 false。

尝试一下
console.log(5 < 3);
// Expected output: false

console.log(3 < 3);
// Expected output: false

// Compare bigint to number
console.log(3n < 5);
// Expected output: true

console.log("aa" < "ab");
// Expected output: true
语法 描述

操作数经过多轮强制比较,可以总结为以下几点:

首先,通过依次调用其 [Symbol.toPrimitive]()(以 "number" 作为提示)、valueOf() 和 toString() 方法,将对象转换为原始类型。左边的操作数总是在右边的操作数之前被强制转换。请注意,尽管 [Symbol.toPrimitive]() 被调用时带有 "number" 的提示(意味着有一点倾向于将对象变成数字),但返回值并没有转换为数字,因为字符串仍然被特别处理。

其他运算符,包括 >、>= 和 <= 使用与 < 相同的算法。有两种情况,所有四个运算符都返回 false:

对于所有其他情况,这四种运算符有以下关系:

x < y === !(x >= y);
x <= y === !(x > y);
x > y === y < x;
x >= y === y <= x;

备注: < 和 > 之间一个明显区别是强制的顺序,特别是当强制转化为原始值有副作用时。所有的比较操作符都是先强制转化左操作数再强制转化右操作数。

示例 字符串之间的比较
"a" < "b"; // true
"a" < "a"; // false
"a" < "3"; // false
字符串与数值比较
"5" < 3; // false
"3" < 3; // false
"3" < 5; // true

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

"5" < 3n; // false
"3" < 5n; // true
数值之间的比较
5 < 3; // false
3 < 3; // false
3 < 5; // true
数值与 BigInt 之间的比较
5n < 3; // false
3 < 5n; // true
比较布尔值、null、undefined 和 NaN
true < false; // false
false < true; // true

0 < true; // true
true < 1; // false

null < 0; // false
null < 1; // true

undefined < 3; // false
3 < undefined; // false

3 < NaN; // false
NaN < 3; // false
含有副作用的比较

比较总是将其操作数强制转化为原始值。这意味着同一个对象在一个比较表达式中可能最终会有不同的值。例如,你可能有两个既大于又小于对方的值。

class Mystery {
  static #coercionCount = -1;
  valueOf() {
    Mystery.#coercionCount++;
    // 左侧操作数先强制转化,所以对右操作数会先返回 0 再返回 1
    return Mystery.#coercionCount % 2;
  }
}
const l = new Mystery();
const r = new Mystery();
console.log(l < r && r < l);
// true

警告: 这可能是混乱的根源。如果你的对象提供了自定义的原始值转换逻辑,请确保它是幂等的:多次强制转化应该返回相同的值。

规范 浏览器兼容性 参见

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4