数值
在js中,数值类型通过** double-precision 64-bit binary format IEEE 754**类型实现,一个数字范围可以在 ± 2 − 1022 到 ± 2 + 1023 ±2^{−1022} 到 ±2^{+1023} ±2−1022到±2+1023或者$ ±10^{−308} 到 ±10{+308}$之间,数字精度为53位。可以精确地表达$±2{53} − 1$之内地数字
js的数值类型中还有三个象征性的值
+Infinity; // 正无穷大
-Infinity; // 负无穷大
NaN; // 不是一个数字
十进制数字
十进制数字就是我们日常生活中使用的进制,其是由数字1到9组成的一串数字。
123456789
47
当前,您也可以带上一个前导0,但请注意,只有前导0后面的数字有超过7(不包含7)的数字时,js才会将其认为是一个十进制数字;否则的话,js会将其判断为一个八进制数字。
二进制数字
二进制数字是由0b或者0B开头,由0和1组成的一串数字
0b0110 // 转化为十进制后看,其值是6
0B1001 // 转化为十进制后,其值是9
请注意,当以0b或0B开头,其后却不是0或1时,js会抛出一个异常 "Missing binary digits after 0b"
八进制数字
八进制数字是由0o或者0O开头,由0到7组成的一串数字
0o27 // 23
0O34 // 28
还有一种语法可以表示八进制数字,但是其在严格模式下是被禁止使用的,即您可以使用数字0开头,后面跟一串由数字0到7组成的数字
0123 // 83
034 // 28
0348 // 348
十六进制数字
十六进制数字以0x或者0X开头,后面跟一串由数字0到9、字母a-f(A-F)组成的数字。请注意字母a-f对应的是十六进制中的10-15
0x123
0X123
0x5a // 90
指数
0e-5 // 0
0e+5 // 0
5e1 // 50
175e-2 // 1.75
1e3 // 1000
1e-3 // 0.001
1E3 // 1000
Number对象
下面是Number对象的一些属性和方法
属性 | 作用 |
---|---|
Number.MAX_VALUE | js中最大的正数 |
Number.MIN_VALUE | js中最小的正数 |
Number.NaN | 表示不是数字的值 |
Number.NEGATIVE_INFINITY | 在溢出时返回,表示负无穷大的值 |
Number.POSITIVE_INFINITY | 在溢出时返回,表示正无穷大的值 |
Number.EPSILON | 1和大于1的最小值之间的差 |
Number.MIN_SAFE_INTEGER | js中最小的安全整数( − 2 53 + 1 −2^{53} + 1 −253+1) |
Number.MAX_SAFE_INTEGER | js中最大的安全整数( + 2 53 − 1 +2^{53}-1 +253−1) |
方法 | 作用 |
---|---|
Number.parseFloat() | 传入一个字符串参数,返回一个浮点数 |
Number.parseInt() | 传入一个字符串参数,返回一个指定基数的整数 |
Number.isFinite() | 判断传入的参数是否是一个有限的数字 |
Number.isInteger() | 判断传入的参数是否是一个整数 |
Number.isNaN | 判断传入的参数是否是NaN |
Number.isSafeInteger() | 判断提供的数字是否在安全整数范围内 |
下面表格是Number对象原型中的一些方法
方法 | 作用 |
---|---|
toExponential() | 返回一个以指数形式表示数字的字符串 |
toFixed() | 返回以定点表示法表示数字的字符串 |
toPrecision() | 返回一个字符串,以定点表示法将数字表示为指定精度 |
Math对象
下面是Math对象的一些常用方法
方法 | 作用 |
---|---|
abs() | 绝对值 |
sin(), cos(), tan() | 分别返回传入参数对应的正弦、余弦、和正切的值,注意参数应是以弧度为单位 |
asin(), acos(), atan(), atan2() | 反三角函数,参数以弧度为单位 |
sinh(), cosh(), tanh() | 双曲函数 |
asinh(), acosh(), atanh() | 反双曲函数 |
pow(), exp(), expm1(), log(), log10(), log1p(), log2() | 指数和对数函数 |
floor(), ceil() | floor() 函数返回小于传入参数的最大整数;ceil() 函数返回大于传入参数的最最小整数 |
min(), max() | 分别返回以逗号分隔的数字中的最小值或最大值 |
random() | 随机返回0到1之间的数字,但不包含1 |
sqrt(), cbrt(), hypot() | 平方根,立方根以及所传入参数的平方的和的平凡根 |
round() | round() 函数主要用于四舍五入 |
sign() | 返回传入参数的符号,用于判断该参数是正数、负数还是0 |
clz32() | 32位二进制表示形式中前导0的数量 |
imul() | 两个参数的类C 32位乘积的结果。 |
BigInt对象
BigInt类型可以用于表示超过Number类型表示范围的整数,请注意Math对象的方法不能用于BigInt类型,除此之外,大部分能够用于Number类型的运算基本都能用于BigInt类型
一个BigInt类型的整数是由一串整数加上后缀n组成的
123n //
-123344556543546541342342n
也可以使用BigInt对象的构造器,在其中传入String类型的参数或者Number类型的参数构造一个BigInt对象
const a = BigInt(123);
const b = BigInt("-123344556543546541342342");
请注意,BigInt类型参与运算,只能产生BigInt类型的值
5n / 2n // 2n
Date对象
Date对象表示的是自UNIX纪元到指定时刻所经过的毫秒数,所谓UNIX纪元指的是1970年1月1日0时0分0秒。可以用如下方式创建一个Date对象
const objectName = new Date([parameters]);
其中parameters
是可选的,通常有如下几种情况
- 没有传入参数,那么会创建一个代表着当前日期时间的Date对象
- 一个日期时间格式的字符串,那么会创建一个如字符串中所记录时间的Date对象,如果省略时、分、秒,那么会自动将其设置为0
- 一组关于年、月、日的整数值,例如
new Date(1987, 1, 1);
,会创建一个日期为1987年1月1日的Date对象 - 一组关于年、月、日、时、分、秒的整数值
Date对象的常用方法
Date对象的方法分为如下几类
- setXxx: 设置Date对象的时间日期值
- getXxx: 得到Date对象的时间日期值
- toXxx: 得到Date对象的字符串形式的时间日期值
- 转换方法,将字符串值转化为Date对象