在 JavaScript 中使用“<”和“>”运算符比较两个字符串

2023-12-01

比较运算符如> and < return Boolean当它们的输入作为两个字符串值给出时的值。

我尝试了几个例子:

/* String vs String */
console.log('firstName' < 'lastname'); // true
console.log('firstName' < 'Firstname'); // false
console.log('!firstName' < 'lastname'); // true
console.log('!firstName' < 'Firstname'); // true
console.log('!firstName' < '!Firstname'); // false
console.log('!firstName' < '_!Firstname'); // true
console.log('@!firstName' < '_!Firstname'); // true
console.log('@!firstName' < '2_!Firstname'); // false

/* String vs Number */
console.log('@!firstName' < 2); // false
console.log('@!firstName' < -1); // false

/* String vs Special Numbers */
console.log('@!firstName' < Infinity); // false
console.log('@!firstName' < -Infinity); // false
console.log('@!firstName' < -Infinity + Infinity); // false

/* String vs NaN */
console.log('@!firstName' < NaN); // false
console.log(NaN.toString()); // "NaN"
console.log('@!firstName' < "NaN"); // true

/* String vs Arrays */
console.log('firstName' < [Infinity, -Infinity]); // false
console.log('firstName' < ['Firstname', Infinity, -Infinity]); // false
console.log('firstName' < ['2_Firstname', Infinity, -Infinity]); // false

我真的很想知道 JavaScript 是如何真正评估这些表达式的。在上面的例子中,我发现这个是最令人着迷的一个console.log('@!firstName' < Infinity); // false.

所以,我的问题是:

如何使用“进行比较大于" and "是 少于" 在这些场景中 JavaScript 中的运算符(来自上面的示例):

  1. 字符串与字符串,
  2. 字符串与数字,
  3. 字符串与特殊数字,
  4. 字符串与 NaN,
  5. 字符串与数组

如上所述,正式规范在标准中:http://www.ecma-international.org/ecma-262/7.0/#sec-abstract-relational-comparison,通俗地说逻辑是这样的:

1)字符串与字符串

将两个字符串拆分为 16 位代码单元并进行数值比较。请注意,代码单元 != 字符,例如"cafè" < "cafè" is true(真的吗)。

2) 字符串与其他原语

将两者都转换为数字。如果其中之一是NaN, 返回false,否则进行数值比较。+0 and -0被认为是平等的,+/-Infinity比其他任何东西都大/小。

3)字符串与对象

尝试将对象转换为原始对象,尝试按顺序,[Symbol.toPrimitive]("number"), valueOf and toString。如果我们有字符串,则继续 1),否则继续 2)。特别是对于数组,这将调用toString这与以下相同join.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中使用“<”和“>”运算符比较两个字符串 的相关文章

  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u

随机推荐

  • Pandas 自动推断最佳数据类型:str 到 int 不起作用

    在超过 100 列的数据框上 我希望 pandas v1 4 2 自动地将所有列转换为 最佳 数据类型 根据文档df convert dtypes or df infer objects 应该可以解决问题 考虑以下示例 gt gt df p
  • .NET 中的依赖注入有示例吗?

    有人可以解释一下吗依赖注入 with 一个基本的 NET 示例并提供一些 NET 资源的链接来扩展该主题 这不是重复的什么是依赖注入 因为我要询问具体的 NET 示例和资源 这是一个常见的例子 您需要登录您的应用程序 但是 在设计时 您不确
  • 参考变量

    在某些文本中 我们不能将常量值分配给引用变量 当我执行这样的程序时 我可以做到 有什么条件我们不能将常量值赋给引用变量吗 您可以将常量引用初始化为常量值 const int i 12 如果引用不是 const 则会出现编译器错误 int i
  • Powershell Active Directory 帐户属性变量

    抱歉新手问题 我正在使用 Powershell 3 获取所有用户帐户的列表 我正在尝试为帐户生成 已启用 或 已禁用 的输出 我可以使用以下命令从活动目录获取帐户状态代码 rc Rech PropertiesToLoad Add userA
  • 如何让 angular2 [innerHtml] 工作 [重复]

    这个问题在这里已经有答案了 我不知道做错了什么 因为没有报告错误 我有一个组件类 import Component OnInit ViewContainerRef from angular core Component selector a
  • AsyncTask - 扩展和 doInBackground 需要哪些参数?

    这段使用 AsyncTask 的代码有什么问题 尤其 我需要在 fetchSchools 中放入哪些参数 我需要在 doInBackground 中放入哪些参数 我发现了很多 有用 的示例 但它们都在这些参数中使用伪代码 并且没有解释我实际
  • 通过深度 HashMap 递归迭代

    我有一个类似于以下内容的 JSON 字符串 foo bar id 1 children some string id 2 children some string id 2 children 我对该字符串进行 JSON 解析 将所有对象转换
  • 循环更新 mayavi 绘图

    我想做的是循环更新 mayavi 图 我希望绘图的更新在我指定的时间完成 与动画装饰器不同 因此 我想要运行的一段示例代码是 import time import numpy as np from mayavi import mlab V
  • 当函数没有被前向声明时,GCC 在编译器阶段不会抛出错误

    Ok 我的目录中有 3 个文件 main c include
  • 如何使用 sklearn.datasets.load_files 加载数据百分比

    我正在加载 8000 张图像sklearn datasets load files并通过 resnet 从keras以获得瓶颈特征 然而这个任务在 GPU 上需要花费几个小时 所以我想知道是否有办法告诉load files加载一定百分比的数
  • Jersey:在不使用 web.xml 文件的情况下禁用 OPTIONS 请求的自动 Wadl 生成?

    我想完成与这个问题相同的事情 禁用 OPTIONS 请求的自动 Wadl 生成 但我们没有web xml文件 我们还利用ResourceConfig 其中getProperties方法是最终的 所以我不能按照中的建议覆盖它其他问题 我试过打
  • 为什么将 D3 源复制到 Angular 服务中?

    我尝试将 d3 使用到一个有角度的项目中 如主要示例之一中提到的NG通讯 其中展示了如何在 Angular 中设置 D3 服务 我想知道将 D3 作为 Angular 服务如何与 Angular yeoman 和 Bower 配合良好 还是
  • 水文年时间序列

    目前我正在研究河流流量数据分析 我有从1935年至今的每日出院记录 我想提取每个水文年的年度最大流量 从 01 11 开始到明年 31 10 然而 我发现HydroTSM包只能处理自然年 我尝试使用 zoo 包 但我发现它很难计算 因为每年
  • XSD 用于带有 HREFLANG 的站点地图

    我们正在推出一个支持 20 种语言和大量区域内容 即针对特定国家或一组国家的内容 的主要网站 因此 我们有一个在站点地图中使用 xhtml link 和 rel hreflang 的教科书用例 我们通常更喜欢从 XSD 生成类 以便我们可以
  • 生成两个具有相同maven项目的jar

    我想在执行 mvn clean install 时从同一个 Maven 项目生成两个 jar 两个罐子之间的唯一区别是内容META INF folder 目前 我已经我的应用程序 jar 我现在想要my jar xxx jar and 我的
  • 如何对主键重新排序?

    我有一个包含 5700 条记录的表 主键是一个整数 现在我注意到缺少一些值 像这样 100 data 101 data 102 data 104 data 103不见了 我如何更新所有行以使顺序正确 104变成103在我的示例中 在一个 S
  • 无法加载文件或程序集“AjaxControlToolkit”或其依赖项之一。该系统找不到指定的文件

    我已经使用我的 Visual Studio 安装了 AJAXcontrolsToolkit 并将 Combobox Ajaxcontrol 控件放置在我的网页中 当我编译代码时出现以下错误 无法加载文件或程序集 AjaxControlToo
  • 如何将云存储上的文件中的 json 导入到 Bigquery

    我正在尝试通过 api 将文件 json txt 从云存储导入到 Bigquery 但抛出错误 当通过网络用户界面完成此操作时 它可以正常工作并且没有错误 我什至设置了 maxBadRecords 0 有人可以告诉我我在这里做错了什么吗 代
  • 预加载的声音被卸载?

    所以 我有以下测试代码
  • 在 JavaScript 中使用“<”和“>”运算符比较两个字符串

    比较运算符如 gt and lt return Boolean当它们的输入作为两个字符串值给出时的值 我尝试了几个例子 String vs String console log firstName lt lastname true cons