为什么一个 typeof string 的数字乘以另一个 typeof string 的数字会得到一个数字?
Why does a number that is typeof string, multiplied by another number that is typeof string result in a number?
所以我是 运行 算法并且已经 运行 解决了一个我不明白的问题。我知道 string + string 会导致两个字符串合并,即使这些字符串是字符串类型的数字。我不明白的是,为什么将一个字符串类型的数字乘以另一个字符串类型的数字也会得到一个数字类型的值。例如:
"8" * "9"
的结果是72,类型是数字,但是"8" + "9"
给出的是"89"
,是字符串。这显示在以下片段中:
console.log("8" * "9");
console.log("8" + "9");
乘法符号为什么或如何将字符串转换为数字?
谢谢!
这是因为*
没有为字符串定义,即一个字符串乘以另一个字符串没有意义(和定义),所以,它检查字符串是否是数字(其中*
已定义),如果是,则将它们乘以数字(如果不是数字,则输出 NaN
,“不是数字”)。然而,添加 +
是为数字和字符串定义的,所以当尝试添加字符串时,它只是添加字符串而不是检查它们的值是否是数字,因为那样你想要添加的内容就会变得模糊、字符串或数字。
所以我是 运行 算法并且已经 运行 解决了一个我不明白的问题。我知道 string + string 会导致两个字符串合并,即使这些字符串是字符串类型的数字。我不明白的是,为什么将一个字符串类型的数字乘以另一个字符串类型的数字也会得到一个数字类型的值。例如:
"8" * "9"
的结果是72,类型是数字,但是"8" + "9"
给出的是"89"
,是字符串。这显示在以下片段中:
console.log("8" * "9");
console.log("8" + "9");
乘法符号为什么或如何将字符串转换为数字?
谢谢!
这是因为*
没有为字符串定义,即一个字符串乘以另一个字符串没有意义(和定义),所以,它检查字符串是否是数字(其中*
已定义),如果是,则将它们乘以数字(如果不是数字,则输出 NaN
,“不是数字”)。然而,添加 +
是为数字和字符串定义的,所以当尝试添加字符串时,它只是添加字符串而不是检查它们的值是否是数字,因为那样你想要添加的内容就会变得模糊、字符串或数字。