大家好,我们一起重温JavaScript。上次我们学习了Boolean构造函数相关的内容,今天我们学习数字以及Number构造函数的内容。
最简单的数字类型就是整数,看代码示例:
let n = 1;
console.log(typeof n)
//number
n = 1024;
console.log(typeof n)
//number
浮点数也是Number类型的一种,我们看代码示例:
let n = 1.02
console.log(typeof n);
//number
我们也可以直接对一个数值调用typeof,并非一定得要事先将其赋值给变量。
console.log(typeof 123)
//number
刚刚我们看到的数字都是十进制的数字,当一个数字以0开头时就表示这是一个八进制数字,当一个数字以0x开头时就表示这是一个十六进制数字,当一个数字以0b开头时就表示这是一个二进制数字。
let n1 = 011;
let n2 = 0x11;
console.log(n1);
//9 (注意:严格模式下会报错)
console.log(n2);
//17
let n3 = 0b11;
console.log(n3)
//3
除了以上的十进制、二进制、八进制的数字表示方法外,数字还有指数表示方式。例如一个数字可以表示成1e1(1e+1,1E1,1E+1)这样的指数形式,含义是在数字1后面加1个0,也就是10。同理,2e+3的意思是在数字2的后面加3个0,也就是2000。我们看代码:
console.log(1e1);
//10
console.log(2e+1)
//20
console.log(3E2);
//300
console.log(typeof 2e+3);
//number
console.log(2e-1)
//0.2
console.log(2e-2)
//0.02
上面例子表明+表示小数点向右移,-号表示小数点向左移。
在JS中还有一种叫做Infinity的特殊值,表示无穷大,同时它也有正负之分。我们来看示例代码:
console.log(Infinity)
//Infinity
console.log(-Infinity)
//-Infinity
console.log(1e308)
//1e+308
console.log(1e309)
//Infinity
console.log(1/0);
//Infinity
console.log(-1/0);
//-Infinity
console.log(typeof Infinity);
//number
console.log(Infinity + 1);
//Infinity
console.log(Infinity -1);
//Infinity
console.log(Infinity*2);
//Infinity
console.log(Infinity/2);
//Infinity
console.log(-Infinity + Infinity);
//NaN
console.log(Infinity - Infinity);
//NaN
以上的例子表明Infinity有正负之分;任何数除以0的结果都为Infinity或者负的Infinity;JS中超过一定范围的数字就会是Infinity;Infinity和其他数字的运算结果都为Infinity;两个Infinity做运算其结果为NaN。
那么NaN是什么呢?它的名字叫做“不是数字”,但是实际上它是数字类型,如果我们在算数运算中使用了不恰当的操作数,那么结果就是NaN。我们来看例子:
console.log(typeof NaN);
// number
let nan = NaN;
console.log(nan);
//NaN
let a = 10*"hello";
console.log(a);
//NaN
console.log(1 + 2 + NaN)
//NaN
在上一次分享中,我们回顾了Boolean的用法,而Number的用法和Boolean是比较类似的主要有两点:
第一,被当作构造函数使用时,它会创建一个对象;
第二,当被当作普通函数使用时,它会试图将任何值转换成为一个数字。
我们看代码示例:
let num1 = Number('124');
console.log(num1);
//124
console.log(typeof num1)
//number
let num2 = new Number("124");
console.log(num2)
//Number {124}
console.log(typeof num2)
//object
console.log(Number)
//ƒ Number() { [native code] }
以上代码说明了Number被当作普通函数使用时得到的是数字,当作构造函数使用的时候得到的是对象,Number本身也是一个函数。
我们之前学习过,函数也是对象,而对象具有属性,Number也一样具有一些属性,我们来详细地学习一下:
第一个属性是MAX_VALUE属性,表示Number所能表示的最大值:
console.log(Number.MAX_VALUE);
//1.7976931348623157e+308
第二个属性是MIN_VALUE属性,表示JS中的最小值:
console.log(Number.MIN_VALUE);
//5e-324
第三个是NaN,表示“Not a number”,它和任何值都不相等,包括自己:
console.log(Number.NaN);
//NaN
console.log(Number.NaN === Number.NaN)
//false
第四个是POSITIVE_INFINITY,它的值和全局变量Infinity一样:
console.log(Number.POSITIVE_INFINITY === Infinity)
//true
第五个是NEGATIVE_INFINITY,它的值和全局的-Infinity一样:
console.log(Number.NEGATIVE_INFINITY === -Infinity)
// true
还有三个属性是函数,第一个是toFixed(),此方法返回一个字符串,以定点小数的形式来表示一个数字,并进行四舍五入,看例子:
let num = new Number(2.1415)
console.log(num.valueOf())
//2.1415
console.log(num.toFixed(3))
//2.142
console.log(num.toFixed(2))
//2.14
第二个是toExponential(),此方法返回一个字符串,以指数的形式来表示某一个数字,并进行四舍五入,参数表示小数点后面保留几位,看例子:
let num = 123123;
console.log(num.toExponential());
//1.23123e+5
console.log(num.toExponential(2));
//1.23e+5
因篇幅问题不能全部显示,请点此查看更多更全内容