当前位置: 首页 > 知识库问答 >
问题:

有什么理由不用加号运算符代替Number()或parseInt()返回一个数字呢?[重复]

计阳泽
2023-03-14

基本上,我想弄清楚这三个陈述之间的区别是什么?有什么理由使用一个而不是其他的吗?第一个是不好的做法吗(它有效,但我从未见过它,似乎没有人在任何地方教过它)?

+'21';
Number('21');
parseInt('21');

共有2个答案

沈翰
2023-03-14

据我所知,前两者是完全等价的,它们之间的选择是一个品味问题。(就我个人而言,我更喜欢一元,因为它更简洁,并且大多数JS开发人员都能很好地理解。

parseInt 是不同的,因为它从字符串的开头读取一个数字值,并在到达非数字字符时忽略其余值。一个常见的用途是从CSS值(如“20px”)中获取基础数字。请注意,在这种情况下,其他两种方法将因 NaN 而失败。

晏经武
2023-03-14

parseInt 将字符串解析为第一个非数字数字,并返回它找到的内容,

例如:parseInt('123abc') // 返回 123;

Number尝试将整个字符串转换为数字(如果可以)。

例如:< code>Number('123abc') //返回NaN

一元加运算符也可用于将字符串转换为数字,但与其他表达式和运算符一起使用时不太可读

在内部,“21”将以名称方式工作,即Number(“21”)*1

 类似资料:
  • 问题内容: 将字符串转换为数字时,行为如何不同? 问题答案: 嗯,它们在语义上是不同的,称为函数的构造函数执行类型转换并执行 解析 ,例如: 请记住,如果在字符串上检测到前导零,它将以八进制为基础来解析数字,这在标准的新版本ECMAScript 5中已更改,但是要花很长时间才能进入浏览器实现((与ECMAScript3不兼容),也将忽略与当前使用的基数的任何数字都不对应的结尾字符。 该构造函数不检

  • 我使用的是我的代码中有两个可观察的对象 观察值不是来自请求,而是来自 我需要根据这个逻辑将序列组合/转换成一个单一的可观察值: 如果序列,或,-需要返回新的可观察的否则需要返回 我试图使用来实现: 但问题是我的

  • 问题内容: 和之间的区别是什么? 问题答案: parseInt(“123qwe”) 返回123 退货 换句话说,解析到第一个非数字并返回其解析后的内容。想要将整个字符串转换为数字,也可以是浮点BTW。 编辑#2:关于用例:已经在两行之间写了一些。使用的情况下,您间接要检查给定的字符串完全代表一个数值,浮点或整数。并没有那么严格,因为它们只是沿解析并在数值停止时停止(基数!),这在您需要在前面“如果

  • 这个问题基本上是说迭代一个整数,然后计算这个数是否可以被它的左边数整除,如果它可以整除,则返回一个布尔数组。 73312 第一个数字没有左边的数字,所以它是假的 我运行了测试,一切都很好,但是有了这个数字(73312),当它应该返回false时,它会返回true。 预期输出 实际输出

  • 问题内容: 我看了这个关于表达式(以下简称“逗号操作”的问题)和MDN文档有关,但我想不出一个场景的地方是有用的。 那么,逗号运算符什么时候有用? 问题答案: 以下内容可能不是很有用,因为您不是自己编写的,但是压缩程序可以使用逗号运算符来缩小代码。例如: 会成为: 现在可以使用该运算符,因为逗号运算符(在一定程度上)允许将两个语句写为一个语句。 这 是 有用的,因为它允许一些整齐压缩(39 -这里

  • 我怎样才能缩短这个,而不是用一打或的