【问题标题】:Bug in Javascript type coercion [duplicate]Javascript类型强制中的错误[重复]
【发布时间】:2021-04-15 07:37:33
【问题描述】:

我在使用 Javascript 和类型强制(由 Javacript 自动转换变量类型)时遇到了这个奇怪的错误。 这是代码

console.log('23' < '3');

位于一个名为 index.js 的文件中,由这个简单的 html 调用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello World</h1>
    <script src="index.js"></script>
</body>
</html>

真正奇怪的是这个操作返回 true 而不是 false。 我做了一些测试,发现这个 '23

【问题讨论】:

  • "如果两个值都是字符串,则根据它们包含的 Unicode 代码点的值将它们作为字符串进行比较" - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 你不应该永远依赖 JS 类型强制,因为这种行为相当不直观。
  • 感谢您的回复。我正在听一个关于 udemy 的讲座,这个例子有 2 个字符串值。我认为我们在引用最多的 udemy javascript 课程之一的讲座中发现了一个错误
  • @SuperStormer:代码中没有类型强制。
  • 我想让你注意,只有 + 和 运算符在字符串之间没有类型强制。即使值是 2 个字符串,所有其他操作(-、/、*、等...)也会触发类型转换。

标签: javascript types coercion type-coercion


【解决方案1】:

这不是错误,您正在比较两个字符串, 并且字符串“23”小于字符串“3”。 在字符串比较中,比较第一个字符,如果一个小于另一个,则终止比较。

“2”在ASCII表(https://www.asciitable.com/)中也小于“3”,所以结果是预期的。

【讨论】:

    猜你喜欢
    • 2012-06-13
    • 2017-11-10
    • 2020-06-22
    • 2019-07-16
    • 2021-06-24
    • 2019-07-10
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多