基本上,我试图弄清楚这3条语句之间的区别是什么?是否有任何理由使用一个而不是另一个?是第一种不好的做法吗(它可以奏效,但我从未见过,而且似乎在任何地方都没有教过)?
+'21';
Number('21');
parseInt('21');
答案 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
结束。