数值扩展
1.Number.EPSILON
Number.EPSILON
Number.EPSILON
就可以完美解决。
console.log(0.1+0.2 === 0.3) //false function equal(a,b){ if(Math.abs(a-b) < Number.EPSILON){ return true }else{ return false } } console.log(equal(0.1+0.2,0.3)) //ture
2.Number.isFinite
是用来检测一个数值是否为有限数的,返回值为Boolean
类型
console.log(Number.isFinite(100)) //true console.log(Number.isFinite(100/0)) //false console.log(Number.isFinite(Infinity)) //false
3.Number.isNaN
检测数值是否为NaN,和传统的方法区别是不会隐式转换
Number.isNaN(100) // false Number.isNaN(NaN) // true Number.isNaN('100') // false Number.isNaN(true) // false Number.isNaN(9/NaN) // true Number.isNaN('true'/0) // true Number.isNaN('true'/'true') // true
4.Number.parseInt和Number.parseFloat
字符串转换成整数和浮点数。
Number.parseInt('1314520love') //1314520 Number.parseFloat('3.1415爱你') //3.1415
5.Number.isInteger
判断一个数值是否为整数。javascript中12.0和12被认为是同一个数,所以12.0也同样被认为是整数。
Number.isInteger(12) //true Number.isInteger(12.0) //true Number.isInteger(1.5) //false Number.isInteger(0) //true Number.isInteger("0") //false
6.Math.trunc
将数值的小数部分去掉。如果遇到纯数字字符串,也会被识别为数字来处理。同时true
返回1,false
返回0.
Math.trunc(3.5) // 3 Math.trunc('3.5') // 3 Math.trunc('abc') // NaN Math.trunc(true) // 1 Math.trunc(false) // 0 Math.trunc(0) // 0
7.Math.sign
判断一个数值是正数、负数还是0.
如果为正数,返回1,负数返回-1,0返回为0,其他返回为NaN(true被认为1来处理,false被认为0来处理).
Math.sign(100) // 1 Math.sign(-100) // 0 Math.sign(0) // 0 Math.sign('abc') //NaN Math.sign(true) // 1 Math.sign(false) // 0
8 .二进制和八进制的表示方法
二进制以0b
开头,八进制以0o
开头
let b = 0b1010 //二进制 let o = 0o777 //八进制 let d = 100 //十进制 let x = 0xff // 十六进制 console.log(b) // 10 console.log(o) // 511 console.log(d) // 100 console.log(x) // 255
Object扩展
1.Object.is
判断两个值是否相等。Object.is()
方法能判断NaN,这个有异于传统的方法。
Object.is(1,2) // false Object.is(1,1) // true Object.is(NaN,NaN) //true console.log(NaN === NaN) //false
2.Object.assign
Object.assign(op1,op2)
可以把两个对象op1
和op2
进行合并,如果两者都具有的属性,后者op2
的属性会覆盖前者op1
的属性值,非共同的部分则都保留.同时第一个参数op1
的值也更新为最新合并后的值.
let op1 = { name:'mnn', sex:'男', age:28, map:'nicai' } let op2 = { name:'孟繁胜游', sex:'男', age:18, hobby:'love' } console.log(Object.assign(op1,op2)) console.log(op1) // { // age: 18 // hobby: "love" // map: "nicai" // name: "孟繁胜游" // sex: "男" // }
3.Object.keys、Object.values
Object.keys
表示获取对象的键,返回一个数组;Object.values
表示获取对象键值,返回一个数组.
const school = { name:'mnn', cities:['北京','上海','广州'], skill:['javascript','vue','nodeJs'] } Object.keys(school) // ['name','cities','skill'] Object.values(school) // ['mnn',"['北京','上海','广州']","['javascript','vue','nodeJs']"]
4.Object.entries
返回一个数组,每个数组的值又是一个数组,包括键和键值.
const school = { name:'mnn', cities:['北京','上海','广州'], skill:['javascript','vue','nodeJs'] } Object.entries(school) // [['name', 'mnn'],['cities',['北京','上海','广州']],['skill',['北京','上海','广州']","['javascript','vue','nodeJs']]]