关于阅读 ES6- 数值 整理的问题

1、ES6二进制和八进制、十六进制的表示方法是什么?

答:二进制表示使用前缀0b 或者 0B ,例如 0b101011、0B1110
八进制使用前缀 0o 或者 0O ,例如 0o121 、 0O123
十六进制使用前缀 0x 或者 0X, 例如 0x123 、0X123

2、如何将二进制或者八进制转换为十进制的值?

答:使用Number方法
Number(0b1010)
Number(0o123)

3、常见的数值分隔符有哪些

答:有两种,逗号分隔符 、下划线分隔符
100,000,000
100_000_000

4、数值分隔符和下划线分隔符的区别

答:两个的作用都是为了提高数值的可读性
数值分隔符通常式每三位添加一个分隔符:100,000,000
下划线分隔符不限制分割的位数,可以 一位、两位、三位等
下划线分隔符可用于二进制、八进制、十进制、小数、科学计数法等

5、数值分隔符使用的注意事项

答:不能放在数值的最前面或者最后面
不能放在小数点的前后
不能放在科学计数法的 e或者E前后
不能多个分隔符在一起

6、Number.isFinite()与isFinite()的区别

答:都是用来判断一个数是否有限
Number.ifFinite()定义在Number上的,对非数值一律返回false
isFinite()定义在全局上的,在判断之前会先调用 Number方法进行转换,然后再进行判断是否有限

7、Number.isNaN()与isNaN()的区别

答:都是用来判断一个数是否是NaN
Number.isNaN定义在Number上,非NaN一律返回false
isNaN定义在全局上,判断之前先调用Number方法

8、Number.parseInt() 和parseInt()的区别

答:功能上无区别,只是将全局的方法移到Number上,减少了全局方法,实现语言的模块化

9、Number.parseFloat() 和 parseFloat()的区别

答:功能上无区别,只是将全局的方法移到Number上,减少了全局的方法,实现了语言的模块化

10、怎么判断一个数是否是整数?

答:使用 Number.isInteger()方法

11、为什么25和25.0被Number.isInteger()方法都视为整数?

答:因为在JavaScript中,整数和浮点数的存储方式都是一样的

12、为什么JavaScript中0.1+0.2不等于0.3呢

答:因为JavaScript中数值的存储是按照 IEEE75标准的,只能存储64位双精度格式,即最多能存储53位二进制位,
如果数值超过了,就会被舍弃。
而0.1+0.2过程中,先进行二进制的换算,这个过程有精度的缺失
换算相加后再转为十进制又有一次精度缺失的过程
两次精度的缺失,造成了 0.1+0.2并不完全等于0.3

13、Number.EPSILON有什么作用

答:用于设置误差范围。例如,如果0.1+0.2与0.3的误差在 Number.EPSILON之间,就表示0.1+0.2 === 0.3

14、JavaScript中怎么让0.1+0.2 === 0.3呢

答:使用Number.EPSILON ,它是一个很小的变量,值等于 大于1的最小浮点数-1的值,2的-52次方
0.1+0.2-0.3 <= Number.EPSILON

15、JavaScript的能准确表示的整数范围是什么?

答:小 2的52次方 ,大于2的-52次方

16、JavaScript的最大和最小安全整数是什么?

答:Number.MAX_SAFE_INTEGER ,值等于 2的52次方
Number.MIN_SAFE_INTEGER ,值等于 2的-52次方

17、判断一个整数值是否是安全整数

答:使用Number.isSafeInteger()

18、获取一个数的整数部分

答:使用Math.trunc(),这个方法会先调用 Number方法

19、判断一个数是正数、负数或者0

答:使用 Math.sign()方法,正数返回+1,负数返回-1,0返回0,-0返回-0,其他返回NaN

20、获取一个数的立方根

答:Math.cbrt()

21、JavaScript的指数运算符

答:指数运算符 ** , 与Math.pow()功能一样,但在V8引擎中实现是不一样 的
22 === 4
2
3 === 8
2**4 === 16
Math.pow(2,3) // 8

22、为什么ES6中增加了BigInt数据类型,有什么优点吗

答:一个是因为JavaScript不能精确表示超过53位二进制(16位十进制)的值
二是JavaScript表示大于等于2的1024次方的数,只能统一使用 Intinity进行表示
而ES6新增的BIgInt数据类型可以解决这两个问题

23、BigInt数据类型怎么表示

答:数值(十进制、二进制、八进制、十六进制等)+n 的格式, 例如 12n 、100000000000000000000000000000000000000000000n

24、BigInt数据类型可以像Number类型的普通数值一样进行加减乘除运算

答:1n+2n = 3n
3n-1n = 2n
2n*3n = 6n
4n/2n = 2n
注意:
number类型和BigInt类型不能混合运算,例如:1n+2 // 报错
BigInt数据类型不能和 == 混合使用,因为 == 存在隐式的类型转换进而改变数据类型。例如:0n==0 // 报错
BigInt数据类型可以和 === 混合使用 ,例如 0n === 0 // false

25、JavaScript有几种数据类型

答:八种,Number String Boolean Array Object Map Set BigInt

26、怎么判断一个数值是否是BigInt数据类型

答:使用 typeof ,typeof(12n) === ‘bigint’

27、BigInt和字符怎么和字符进行运算?

答:先转为字符串,再进行运算 ,例如 2n+‘ssss’ // ‘2ssss’

28、BigInt怎么转为字符串、数值、布尔类型的值呢

答:分别使用 Number() String() Boolean或者取反运算符
Number(0n) // 0
String(1n) // ‘1’
Boolean(1n) // true
!0n // true

猜你喜欢

转载自blog.csdn.net/qq_37600506/article/details/124432243
今日推荐