当前位置: 首页 > 面试题库 >

parseInt vs一元加-何时使用

潘俊楚
2023-03-14
问题内容

这行之间有什么区别:

var a = parseInt("1", 10); // a === 1

这条线

var a = +"1"; // a === 1

此jsperf测试表明,假设适用于node.js!,在当前的chrome版本中,一元运算符要快得多。

如果我尝试转换不是数字的字符串,都将返回NaN

var b = parseInt("test" 10); // b === NaN
var b = +"test"; // b === NaN

所以我什么时候应该更喜欢使用parseInt一元加号(尤其是在node.js中)???

编辑 :和双波浪号运算符~~什么区别?


问题答案:

好吧,这是我知道的一些区别:

  • 空字符串的""计算结果为a 0,而其parseInt计算结果为NaN。IMO,空白字符串应为NaN

    +'' === 0;              //true
    

    isNaN(parseInt(‘’,10)); //true

  • 一元的+行为更像是parseFloat因为它也接受小数。

parseInt另一方面,当看到非数字字符(例如要用作小数点的句点)时,它将停止解析.

    +'2.3' === 2.3;           //true
parseInt('2.3',10) === 2; //true
  • parseInt从左到右parseFloat解析并构建字符串。如果他们看到一个无效字符,它将返回已解析的内容(如果有)为数字,如果没有解析为数字,则返回。 __NaN

+另一方面,NaN如果整个字符串不可转换为数字,则一元将返回。

    parseInt('2a',10) === 2; //true
parseFloat('2a') === 2;  //true
isNan(+'2a');            //true
  • 如@Alex K.的评论所示,parseInt并将parseFloat按字符进行解析。这意味着十六进制和指数符号将失败,因为xe将被视为非数字组件(至少在base10上)。

一元+将正确地转换它们。

    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.


 类似资料:
  • 这一行有什么不同: 这条线呢 这个jperf测试显示,一元操作符在当前chrome版本中要快得多,假设它是node.js!? 如果我尝试转换非数字的字符串,两者都返回: 那么什么时候我应该更喜欢使用而不是一元加号(尤其是在node.js中)??? 编辑:和双波浪操作符有什么区别?

  • 问题内容: 这行之间有什么区别: 这条线 此jsperf测试表明,假设适用于node.js !,在当前的chrome版本中,一元运算符要快得多。 如果我尝试转换不是数字的字符串,则都返回: 所以我什么时候应该更喜欢使用一元加号(尤其是在node.js中)??? 编辑 :和双波浪号运算符有什么区别? 问题答案: 好吧,这是我知道的一些区别: 空字符串的计算结果为a ,而其计算结果为。IMO,空白字符

  • 问题内容: 我们无法对从.. 获得的集合执行或操作,仅允许进行remove操作。 因此,如果遇到需要在其中添加新元素而不删除其中的先前元素的情况,该怎么办?我该如何实现? 问题答案: 使用构造函数创建一个新的:

  • 我有一个salesforce应用程序,我正在使用selenium实现自动化,我正在实现用于拖放的javascript。问题是,当我将src元素放到目标上时,它会被放到其他地方,我们需要手动将元素放到目标上几秒钟,以便将其固定到目标上。我们有没有一个代码可以让元素在目标上停留几秒钟。 下面是我的拖放代码,如何在tgt上保存src元素 谢谢!

  • 我想了解更多这句话发现Grails留档: 如果测试涉及证明测试对象以特定方式与合作者交互,则使用模拟。如果协作者以某种方式的行为暴露了测试主题中的特定行为,那么该行为的结果就是您正在测试的,请使用存根

  • 问题内容: 在CSS中,将鼠标悬停在元素上时,可以使用:hover伪类为其指定视图: 如何使用jquery添加或“打开”此伪类?通常在jQuery中,如果您想添加一个类,可以这样做: 我已经尝试过“ hover”,但这实际上是在元素中添加了一个名为“ hover”的类。 如果有人知道写什么,请告诉我!谢谢! 问题答案: 您不能强迫某个伪类使用jQuery来应用。伪类(尤其是动态伪类)不是这样工作的