【发布时间】:2020-12-25 17:17:29
【问题描述】:
我有数组,在某些时候我会映射数组并计算总和和百分比。所以在实现逻辑时我看到了,当我直接使用'*'时它的工作但是当我使用'+'时它只是添加了两个字符串
For example:
const a = '100';
const b = '10';
const c = a * b;
const d = a + b;
console.log(d)
当我检查 d 时,它给出 '10010' 而当 c 它给出 '1000' !这是怎么回事?
但是当我使用 parseInt(a) + parseInt(b) 时,它与110 作为输出完美配合
【问题讨论】:
-
a和b是字符串,所以+是字符串连接,而*没有定义,所以 JS 会尝试将a和b转换为*已定义。如果您希望a和b实际上是 be 数字,那么是的,您必须先转换它们,但我建议使用parseFloat,而不是parseInt。如果您不处理不代表十进制值的字符串(如二进制、八进制、base-52 等),或者您明确编写代码以丢弃数字的派系部分,请仅使用parseInt-作为字符串。 -
那么如果我们使用
*js 会自动将其转换为数字? -
@Christina122 是的,如果您使用 *,它将被视为数字。你不能乘以字符串。
-
它会导出数字,严格来说不是转换它们,仅用于评估
*。 -
你可以试试这个`+a * +b`,这会将它们强制转换成数字。
标签: javascript