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

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将被视为非数字html" target="_blank">组件(至少在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.


 类似资料:
  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的

  • 您可以在整个web上读到AWT是旧的和不推荐的,而Swing是旧的,但比AWT新,应该尽可能优先于AWT。但是我如何确定什么时候可以用它的摆动挂件替换AWT组件呢?web中的几个示例仍然使用AWT组件,其中可以使用Swing。那么有没有一个明确的建议,从AWT中使用什么,什么不使用?我知道,当我使用官方不推荐的组件时,java编译器会给出一个简短的说明,例如: 将产生如下警告: 换句话说:及其子包

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。

  • 一般来说,当发现 CPU 的占用率和实际业务应该出现的占用率不相符,或者对 Nginx worker 的资源使用率(CPU,内存,磁盘 IO )出现怀疑的情况下,都可以使用火焰图进行抓取。另外,对 CPU 占用率低、吐吞量低的情况也可以使用火焰图的方式排查程序中是否有阻塞调用导致整个架构的吞吐量低下。 常用的火焰图有三种: lj-lua-stacks.sxx 用于绘制 Lua 代码的火焰图 sam

  • 问题内容: 我习惯于进行Java编程,在编程时,您无需真正考虑指针。但是,此刻我正在用C ++编写程序。在创建具有其他类成员的类时,何时应该使用指针,何时不应该使用指针?例如,什么时候我想这样做: 与此相反: 问题答案: 首先避免指针。 在以下情况下使用它们: 您想使用Pimpl习惯用法或抽象工厂。 该实例实际上是由程序的其他部分管理的,而该类仅需要能够访问它。 您想推迟对象的构建(即,您想 在