为了账号安全,请及时绑定邮箱和手机立即绑定

ParseInt与一元加-何时使用哪个

ParseInt与一元加-何时使用哪个

MMTTMM 2019-07-16 16:21:27
ParseInt与一元加-何时使用哪个这一行之间有什么区别:var a = parseInt("1", 10); // a === 1这条线var a = +"1"; // a === 1这,这个jsperf试验显示在当前的Chrome版本中,一元操作符的速度要快得多,假设它是针对node.js的!?如果我试图转换不是数字的字符串,则两个字符串都返回NaN:var b = parseInt("test" 10); // b === NaNvar b = +"test"; // b === NaN那么我应该在什么时候使用parseInt超过一元加(特别是node.js)?编辑:与双倾斜算子有什么区别?~~?
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

请看这个答案更完整的案例




好吧,以下是我所知道的一些不同之处:

  • 空字符串""计算结果为0,同时parseInt评估为NaN..imo,空字符串应该是NaN.

    +'' === 0;              //trueisNaN(parseInt('',10)); //true
  • 一元+表现得更像parseFloat因为它也接受小数。

    parseInt另一方面,当它看到一个非数字字符时,它将停止解析,就像拟为小数点的句点一样。..

    +'2.3' === 2.3;           //trueparseInt('2.3',10) === 2; //true
  • parseIntparseFloat解析并构建字符串。从左到右..如果他们看到一个无效字符,它将已解析的内容(如果有的话)返回为一个数字,以及NaN如果没有被解析为一个数字。

    一元+另一方面又会回来NaN如果整个字符串不可转换为一个数字。

    parseInt('2a',10) === 2; //trueparseFloat('2a') === 2;  //trueisNan(+'2a');           
     //true
  • 从…的评论中可以看出@Alex K.parseIntparseFloat将按字符解析。这意味着十六进制和指数符号将失败,因为xe被视为非数字部件(至少在基础10上)。

    一元+会正确地转化他们。

    parseInt('2e3',10) === 2;  //true. This is supposed to be 2000+'2e3' === 2000;          
     //true. This one's correct.parseInt("0xf", 10) === 0; //true. This is supposed to be 15+'0xf' === 15;            
      //true. This one's correct.


查看完整回答
反对 回复 2019-07-16
?
largeQ

TA贡献2039条经验 获得超7个赞

我相信这435的答案中的表格是全面的,但我们可以用以下模式进行总结:

  • 一元加并不是对所有虚假的价值观一视同仁,但它们都是假的。
  • 一元加发送

    true

    对1,但是

    "true"

    NaN.

  • 另一方面,

    parseInt

    对于非纯数字的字符串,则更自由。

    parseInt('123abc') === 123

    ,鉴于

    +

    报告

    NaN.

  • Number

    将接受有效的十进制数,而

    parseInt

    只要把所有的东西都降到十进制以上。因此

    parseInt

    模拟C行为,但对于评估用户输入可能并不理想。
  • 两者都在字符串中修剪空格。
  • parseInt

    ,设计得很差

    解析器

    ,接受八进制和十六进制输入。一元加只需要十六进制。

Falsy值转换为Number下面是C语言中有意义的内容:nullfalse都是零。""去0并不完全遵循这个惯例,但对我来说很有意义。

因此,我认为如果您正在验证用户输入,一元加对于所有东西都有正确的行为,除了它可以接受小数(但在我的实际生活中,我更感兴趣的是捕捉电子邮件输入,而不是完全省略用户ID,等等),而parseInt太自由了。


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信