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 23 === 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
|