【问题标题】:Why does a number that is typeof string, multiplied by another number that is typeof string result in a number?为什么一个 typeof string 的数字乘以另一个 typeof string 的数字会得到一个数字?
【发布时间】:2021-07-16 21:17:51
【问题描述】:

所以我正在运行算法并且遇到了一个我不理解的问题的解决方案。我知道 string + string 会组合两个字符串,即使这些字符串是字符串类型的数字。我不明白为什么将字符串类型的数字乘以另一个数字也会导致字符串类型的值是数字类型。例如:

"8" * "9" 的结果是 72,类型是数字,但 "8" + "9" 给出的 "89" 是一个字符串。这在以下 sn-p 中显示:

console.log("8" * "9");
console.log("8" + "9");

乘法符号为什么或如何将字符串转换为数字?

谢谢!

【问题讨论】:

  • 为什么?因为早在 1993 年,Brendan Eich 就认为这是个好主意。

标签: javascript string numbers typeof


【解决方案1】:

这是因为*没有为字符串定义,也就是说,将一个字符串与另一个字符串相乘没有任何意义(和定义),所以它检查字符串是否为数字(其中*被定义),如果是,则将它们乘以数字(如果不是数字,则输出 NaN, "Not a Number")。但是,在添加时,+ 是为数字和字符串定义的,因此在尝试添加字符串时,它只是添加字符串而不是检查它们的值是否为数字,因为那样的话你想要添加的内容就会模棱两可,字符串或数字。

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2023-03-16
    • 2011-02-17
    相关资源
    最近更新 更多