【问题标题】:Is parseInt doesn't needed for '*' in JavaScript? [duplicate]JavaScript中的'*'不需要parseInt吗? [复制]
【发布时间】: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 作为输出完美配合

【问题讨论】:

  • ab 是字符串,所以 + 是字符串连接,而 * 没有定义,所以 JS 会尝试将 ab 转换为* 定义。如果您希望 ab 实际上是 be 数字,那么是的,您必须先转换它们,但我建议使用 parseFloat,而不是 parseInt。如果您不处理不代表十进制值的字符串(如二进制、八进制、base-52 等),或者您明确编写代码以丢弃数字的派系部分,请仅使用 parseInt -作为字符串。
  • 那么如果我们使用* js 会自动将其转换为数字?
  • @Christina122 是的,如果您使用 *,它将被视为数字。你不能乘以字符串。
  • 它会导出数字,严格来说不是转换它们,仅用于评估*
  • 你可以试试这个`+a * +b`,这会将它们强制转换成数字。

标签: javascript


【解决方案1】:

在 JavaScript 中没有像 int、float 等原始数据类型。只有变量可以用你需要的一切来初始化。以你为例

const a = 100;
const b = 10;

const c = a * b;

const d = a + b;

console.log(d);

应该可以完美运行,因为我删除了''。对于'',常量认为它是一个提供的字符串。如果没有'',则只有保存在常量中的数字。 + 在您的示例中也不起作用,因为正如我所说,由于'',常量认为数字是字符串。所以它只是将这两个“字符串”放在一起而不是总结它们。

【讨论】:

  • 除此之外,还有一个原始的纯整数数据类型使用n 后缀,它为您提供BigInt 而不是Number
  • 我明白,但就我而言,我需要将它们保留为字符串!
  • 哦,好吧,对不起,@Christina122。然后快速简单地回答您的问题:将两个字符串相乘时不需要 parseInt()。
猜你喜欢
  • 2012-01-14
  • 2013-09-10
  • 2012-09-24
  • 1970-01-01
  • 2011-04-23
  • 2012-08-28
  • 2015-11-25
  • 2012-09-20
  • 2012-06-06
相关资源
最近更新 更多