为什么JS中数值类型已经可以使用Number方法,还要引入Number对象概念?

JavaScript05

为什么JS中数值类型已经可以使用Number方法,还要引入Number对象概念?,第1张

JavaScript中,数值类型有两种表示方式:直接量和Number对象。这两种表示方式在大多数情况下是等价的,但是它们有一些重要的区别。

直接量(也称为原始值)表示一个数值常量,它直接写在代码中,例如10或者3.14。直接量是不可变的,它们是原始类型的值,不能调用方法,只能进行基本的运算。

Number对象表示一个数值,但是它是一个对象,而不是原始类型的值。Number对象可以调用方法来执行更高级的操作,比如转换为字符串、比较大小等。但是,由于Number对象是可变的,所以它的性能要比直接量差一些。

所以,通常来说,我们应该优先使用直接量来表示数值,只有在需要使用Number对象的方法时才使用Number对象。

对于上面的例子,n1和n2两者都可以调用toString()方法来将数值转换为字符串,但是n2是一个Number对象,所以它可以调用更多的方法。例如,使用Number.isInteger()方法检查一个数值是否为整数时,n1是直接量,所以它可以直接传入`Number

另外,由于Number.isInteger()方法是Number对象的一个静态方法,而不是实例方法,所以它无法直接在Number对象实例上调用。例如,在上面的例子中,Number.isInteger(n1)返回true,因为n1是一个直接量,它可以直接传入Number.isInteger()方法;而Number.isInteger(n2)返回false,因为n2是一个Number对象实例,而不是直接量,它不能直接传入Number.isInteger()方法。

总之,直接量和Number对象两者都可以表示数值,但是它们有一些重要的区别,应该根据实际情况来选择使用哪种方式。通常来说,我们应该优先使用直接量来表示数值,只有在需要使用Number对象的方法时才使用Number对象。

与 parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一 个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点是无效的,因此它后面的字符串将被忽略。举例来 说,“22.34.5”将会被转换为22.34。

除了第一个小数点有效之外,parseFloat()与parseInt()的第二个区别 在于它始终都会忽略前导零。parseFloat()可以识别前面讨论过的所有浮点数值格式,也包括十进制整数格式。但十六进制格式的字符串始终会被转换 为0。由于parseFloat()只解析十进制值,因此它没有用第二个参数指定基数的用法。

Number.MAX_VALUE 是 js的一个常量,表示js可表示的最大值 ,值为 1.7976931348623157e+308,在使用时可用来判断某个值是否超出了js可表示的最大值.一般用在判断 常量是否超出js 最大范围可以通过alert(Number.MAX_VALUE)来自己看看 弹出值。