是否有任何理由不使用加号运算符代替Number()或parseInt()返回数字?

时间:2018-09-23 16:27:23

标签: javascript

基本上,我试图弄清楚这3条语句之间的区别是什么?是否有任何理由使用一个而不是另一个?是第一种不好的做法吗(它可以奏效,但我从未见过,而且似乎在任何地方都没有教过)?

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

2 个答案:

答案 0 :(得分:1)

parseInt将字符串解析为第一个非数字编号,然后返回找到的内容,

例如:parseInt('123abc') // returns 123;

Number尝试将整个字符串转换为数字。

例如:Number('123abc') // returns NaN

Unary plus operator也可以用于将字符串转换为数字,但是当与其他表达式和运算符一起使用时,可读性很差

在内部,+'21'的命名方式为Number('21') * 1

答案 1 :(得分:1)

据我所知,前两个是完全等效的,它们之间的选择取决于口味。 (我个人更喜欢一元+,因为它更简洁,并且大多数JS开发人员都很好理解。)

parseInt有所不同,因为它从字符串的开头读取一个数字值,并在到达非数字字符时忽略其余的值。通常的用途是从"20px"之类的CSS值中获取基础数字。请注意,在这种情况下,其他两种方法将失败,并以NaN结束。