JS中ES6的特性(部分) | 青训营笔记

50 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第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 没有位数的限制