这是我参与「第四届青训营 」笔记创作活动的第8天
let 和 const命令
let类似于var,但是旨在let命令所在的代码块内有效,它不逊在变量提升. let为JS新增了块级作用域,外层代码块不受内层代码块的影响,并且可以在块级作用域中声明函数.
const声明一个只读的常数,一旦声明,值就不可以改变.和let相同只在声明的块级作用域里面有效.
const,let,class等声明的全局变量不属于顶层对象的属性.
解构赋值
可以将变量赋值写成如下形式:
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"
只要模式匹配就可以赋值. 同样,对象,字符串,数值和布尔值,函数参数也可以进行解构赋值.
模板字符串
ES6可以用''两个单引号将字符串包围,如果需要再模板字符串中嵌入变量,需要将变量名写入 ${} 中
字符串的新增方法
- String.fromCodePoint():可以识别大于0xFFFF的字符
- String.raw():返回一个斜杠都被转义的字符串
- codePointAt():可以正确处理四个字节储存的字符.
- normalize():将字符的不同表示方法统一为同样的形式.
- includes(),startsWith(),endsWith()
- repeat():表示将字符串重复n次
- padStart(),padEnd():如果字符串不够指定的长度就用指定的字符来补全.
- trimStart(),trimEnd():消除头部或者尾部的空格
- matchAll():返回一个正则表达式在当前字符的所有匹配
- replaceAll():
- at():支持负索引,返回参数指定位置的字符
数值的扩展方法
- 数值分隔符:可以将1000写为1,000,或者用_表示为1_000,用_作为分隔符对间隔没有要求.
- Number.isFinite(),Number.isNaN()
- Number.isInteger()
- Number.EPSILON:代表极小常量,即最小精度.
- Number.isSafeInteger():判断一个数是否在-2^53和2^53之间.
Math的扩展
- Math.trunc():去除小数部分
- Math.sign():判断正负.
- Math.cbrt():立方根
- Math.clz32():转为32为无符号整数的形式.
- Math.fround():返回32为单精度浮点数
- Math.hypot():返回所有参数平方和的平方根
- Math.expm1():返回e^x-1
- Math.log1p():返回log(1+x)
- Math.log10(),Math.log2()
ES6支持BigInt 没有位数的限制