一元加号/数字(x)和parseFloat(x)有什么区别?
2022-08-30 01:21:59
我问这个只是为了减少几个字节。
我知道我可以使用(一元加号)代替.这些和 之间有区别吗?+x
Number(x)
parseFloat
我问这个只是为了减少几个字节。
我知道我可以使用(一元加号)代替.这些和 之间有区别吗?+x
Number(x)
parseFloat
parseFloat
/parseInt
用于解析字符串,而 / 用于将值强制转换为数字。他们的行为不同。但首先让我们看看它们的行为在哪里:Number
+
parseFloat('3'); // => 3
Number('3'); // => 3
parseFloat('1.501'); // => 1.501
Number('1.501'); // => 1.501
parseFloat('1e10'); // => 10000000000
Number('1e10'); // => 10000000000
因此,只要您有标准数字输入,就没有区别。但是,如果您的输入以数字开头,然后包含其他字符,则会从字符串中截断该数字,同时给出(不是数字):parseFloat
Number
NaN
parseFloat('1x'); // => 1
Number('1x'); // => NaN
此外,理解十六进制输入,而不理解:Number
parseFloat
parseFloat('0x10'); // => 0
Number('0x10'); // => 16
但是对于空字符串或仅包含空格的字符串,行为很奇怪:Number
parseFloat(''); // => NaN
Number(''); // => 0
parseFloat(' \r\n\t'); // => NaN
Number(' \r\n\t'); // => 0
总的来说,我发现它更合理,所以我几乎总是亲自使用(你会发现很多内部JavaScript函数也使用)。如果有人键入,我更喜欢显示错误,而不是将其视为键入 .我唯一真正破例的时候是当我将样式转换为数字时,在这种情况下是有帮助的,因为样式的形式如下,在这种情况下,我想删除零件并只得到,所以我在这里发现很有帮助。但实际上,你选择哪一个取决于你,以及你想接受哪种形式的输入。Number
Number
Number
'1x'
'1'
parseFloat
'3px'
'px'
3
parseFloat
请注意,使用一元运算符与用作函数完全相同:+
Number
Number('0x10'); // => 16
+'0x10'; // => 16
Number('10x'); // => NaN
+'10x'; // => NaN
Number('40'); // => 40
+'40'; // => 40
所以我通常只是简称。只要你知道它的作用,我发现它很容易阅读。+
区别在于当输入不是“正确数字”时会发生什么。 返回,同时“尽可能多地”解析。如果在空字符串上调用,则返回 parseFloat 返回 。Number
NaN
parseFloat
Number
0
NaN
例如:
Number("") === 0 // also holds for false
isNaN(parseFloat("")) === true // and null
isNaN(Number("32f")) === true
parseFloat("32f") === 32