javascript - 比较时字符串对象如何转换?

标签 javascript

console.log("20">10);  //true 
console.log("20a">"10");  //true 
console.log("20a">10);  //false

我想知道为什么最后一个变成假。 并且“20a”转换为比较之前的内容。

最佳答案

来自 comparison operators 上的 MDN 页面:

For relational abstract comparisons (e.g. <=), the operands are first converted to primitives, then the same Type, before comparison.

console.log("20">10);  //true 

这会将 "20" 转换为数字 20 并进行比较。由于 20 大于 10,因此为真。

console.log("20a">"10");  //true 

这将比较两个字符串。由于 "20a" 大于(按字母顺序)"10",因此为真。

console.log("20a">10);  //false

这会将 "20a" 转换为数字。结果是 NaN(执行 +"20a" 以查看实际效果)。 NaN 不大于任何数字,因此返回 false。

关于javascript - 比较时字符串对象如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855448/

相关文章:

javascript - PeerConnection 无法创建答案

Javascript addEventListener 回调逻辑

javascript - 在 reactJS 中,如何将文本复制到剪贴板?

javascript - Nativescript( Angular )找不到用于延迟加载的模块

javascript - React JS,尝试从数组获取第一个值时未定义错误 no-undef

javascript - jquery中如何删除大括号内的字符?

javascript - 使用 (document).ready 和 jQuery(function ($)) 有什么区别?

javascript - 无法获取/api/登录/工作 - JavaScript/Reddit

javascript - 减少对象内数组的计数值,一旦计数达到零,就会使用 java 脚本自动删除该对象

javascript - 如何通过 JavaScript 检测浏览器是否在 iOS 11 上的 Safari 中运行?