正则表达式的作用是用来匹配字符串的
i (忽略大小写) m (多行匹配) g (全局匹配)
y(粘连修饰符)
const str = 'aaa\_aa\_a'
const reg1 = /a+/g // 每次匹配剩余的
const reg2 = /a+/y // 剩余的第一个开始匹配
console.log(reg1.exec(str))
console.log(reg2.exec(str))
console.log(reg1.exec(str)) // aa
console.log(reg2.exec(str)) // null
console.log(reg1.exec(str)) // a
console.log(reg2.exec(str)) // 又从头开始找
y修饰符会在当前剩余的第一个开始匹配
u修饰符 Unicode 表示有一定的范围
cosnt str = '\uD842\uDFB7' // 表示的一个字符
console.log(/^\uD842/.test(str)) // es5 true
console.log(/^\uD842/u.test(str)) //es6 false
//.除了换行符意外的任意单个字符
console.log(/^.$/.test(str)) //fasle
console.log(/^.$/u.test(str)) //true
console.log(/\u{61}/.test('a')/) // false
console.log(/\u{61}/u.test('a')/) // true
数值的扩展 二进制0B 八进制0O Number.isFinite(), Number.isNaN() Number.parseInt(), Number.parseFloat() Number.isInteger() 0.1 + 0.2 === 0.3 ??? Math 新增方法
十进制 -> 二进制
const a = 5
console.log(toString(2)) // 101
二进制 -> 十进制
const b = 101
console.log(parseInt(5.5)) // 5
console.log(parseInt(b, 2)) // 5
ES6 0B 二进制 0O 八进制
const a = 0B0101
console.log(a) // 5
const b = 0o777
console.log(b) //511
Number.isFinite()
Number.isFinite(5) // 判断当前数值是不是有限的
Number.isFinite(5.5)
Number.isFinite(Infinite) // false
Number.isNaN()
console.log(Number.isNaN(NaN)) // true
console.log(Number.isNaN(1)) // false
- 在ES5 之前isNaN()是挂载在window上面的,逐渐减少全局的方法,是我们的语言更加的模块化
console.log(Number.parseInt(5.5)) // 5 可以转成整数
console.log(Number.parseFloat(5.5)) // 5.5
console.log(Number.isInteger()) // 判断当前数字是不是整数
0.1 + 0.2 === 0.3 // false
- // IEEE 754 双精度标准
- 在计算机存储的时候,存储空间是有限的,如果超出之后会自动存储近似值
- 所以在计算的时候会出现 0.1 + 0.2 != 0.3
const max = Math.pow(2, 53)
console.log(max)
console.log(Number.MAX\_SAFE\_INTEGER === max -1) // true
// 去除小数剩整数部分, 会先把当前参数转成数字之后再取整输出
console.log(math.trunc(5.5))
console.log(math.trunc(true)) // 1
console.log(math.trunc(false)) // 0
Math.sign() 正数就返回正数,负数就返回负数,0 就返回0 NaN就返回NaN true 就是1 false 就是 0
console.log(Math.sign(5)) // 1
Math.cbrt() // 计算一个数的立方根
console.log(Math.cbrt(8))