为什么在JavaScript中,使用+str而不是str*1将字符串转换为数字更好?

11 浏览
0 Comments

为什么在JavaScript中,使用+str而不是str*1将字符串转换为数字更好?

假设我有一个字符串,其值已经是一个数字,例如 var str = \"1234\" 现在我想将其转换为数字。\n到目前为止,我在互联网上看到了两个技巧:\n

    \n

  1. 使用一元操作符 +var num = +str
  2. \n

  3. 使用乘法运算符 *var num = str*1
  4. \n

\n我想知道哪个一般来说更好。\n根据这里被接受的答案的评论: 将 JSON 结果转换为日期,似乎最好避免使用 *1。这是真的吗,背后的原因是什么?

0
0 Comments

为什么在JavaScript中使用+str比str*1更好来将字符串转换为数字?

在JavaScript中,使用+str将字符串转换为数字比str*1更好。这是因为+操作符调用内部的toNumber方法,而乘法操作符也会调用toNumber方法,然后对其进行数学运算。为什么要多此一举呢?

通过查看ECMAScript规范,我们可以了解到+操作符是用来将操作数转换为数字的官方推荐方法,而不是一种hacky的方式。具体可以参考ECMAScript规范的Unary Plus Operator部分。而乘法操作符并没有明确指定将操作数转换为数字的用途,它更多地用于进行数学运算。

虽然我不能说+操作符是官方意图,因为有一些强类型语言实现了一元+操作符,但在使用特定的JavaScript子集ASM时,+操作符被正式用于定义浮点数类型,而<value> | 0被用于定义32位整数类型。

使用+str将字符串转换为数字的方式更加简洁和清晰。它是官方推荐的转换方式,而乘法操作符则不够明确。通过了解ECMAScript规范,我们可以更好地理解JavaScript中的类型转换行为。

0