Nea*_*eal 18 javascript string-conversion
先前已经询问过JavaScript中parseInt(string)和Number(string)之间的区别.
但答案基本上集中在radix和parseInt字符串一样的能力"123htg"和转换成123.
如果出现的收益率之间的任何大的区别是什么我问这里是Number(...)和parseFloat(...)当你通过它的实际数字字符串,没有基数的.
Koo*_*Inc 23
内部运作并没有那么不同,正如@James Allardic已经回答的那样.但是有一点不同.使用时parseFloat,一个(修剪过的)字符串以一个或多个数字字符开头,后跟字母数字字符,可以转换为数字,Number但不会成功.如:
parseFloat('3.23abc'); //=> 3.23
Number('3.23abc'); //=> NaN
Run Code Online (Sandbox Code Playgroud)
在两次转换中,输入字符串都会被修剪,顺便说一下:
parseFloat(' 3.23abc '); //=> 3.23
Number(' 3.23 '); //=> 3.23
Run Code Online (Sandbox Code Playgroud)
Jam*_*ice 18
不会.两者都会导致ToNumber(string)调用内部函数.
从ES5第15.7.1节(作为函数调用的数字构造函数):
当
Number作为函数而不是构造函数调用时,它执行类型转换...返回由
ToNumber(value)if提供的值计算的Number值(不是Number对象),否则返回+0.
从ES5第15.1.2.3节(parseFloat(string)):
...如果既没有
trimmedString也没有任何前缀trimmedString满足a的语法StrDecimalLiteral(见9.3.1)......
而9.3.1是名为"ToNumber应用在String类型"的部分,这是第一次报价是指当它说ToNumber(value).
更新(见评论)
通过Number使用new运算符调用构造函数,您将获得Number对象的实例,而不是数字文字.例如:
typeof new Number(10); //object
typeof Number(10); //number
Run Code Online (Sandbox Code Playgroud)
这在第15.7.2节(数字构造函数)中定义:
当
Number作为new表达式的一部分调用时,它是一个构造函数:它初始化新创建的对象.
| 归档时间: |
|
| 查看次数: |
9576 次 |
| 最近记录: |