1. 正则表达式–断言、群组
  2. ES6–严格模式、箭头函数、解构赋值

正则表达式:

  • 起始符 ^

  • 结束符 $

  • 或者 |

  • 断言:
  • a(?=b)前端断言:判断后面字符是b的a位置

  • a(?!b)前端非:

  • (?<=d)a后端断言:

  • (?<!d)a后端非:

  • 群组:
  • 当match不使用g修饰符时,可以将()中内容单独找出来

  • $1就是第一个()内的内容===群组内容

  • 中文匹配:
  • [\4ue00-\u9fd5]{2,4}

ES6:

  • 严格模式 :

  • 1
    2
    
    1.<script typr="module"></script>
    2."use strict";
    
  • 变量必须定义后使用

  • 不能出现相同参数名

  • 不能使用with语句

  • 不能对只读属性赋值

  • 不能使用八进制

  • 不能删除不可删除的属性

  • eval不会在外层作用域引入变量-可以将字符串映射为一个JS对象、变量、属性、函数等

  • 不使用参数列表的两个属性

  • 不能在顶层使用this

  • const/ let

  • let定义全局变量不会放在window属性下

  • let定义后不能重复定义,避免变量覆盖

  • let定义的变量只能在块语句中生效

  • 箭头函数:
  • 是一个匿名函数

  • 1
    2
    3
    4
    
    var fn=a=>a+1;
    //箭头函数中如果参数仅有一个,可以省略(),如果没有参数或者有一个以上都必须加();
    //在箭头函数中,如果语句块仅有一句,并且这句话使用return返回内容,我们可以去除()和return关键字。
    var arr1=arr.filter(item=>item>3);
    
  • 箭头函数中的this将会是箭头函数外上下文环境的this指向

  • 箭头函数最大特征是改变this的指向为当前箭头函数上下文的this。

  • 所有回调函数中this都会被重新指向为window,严格模式除外===>undefined。

  • 解构赋值:
  • 变量交换:

  • 1
    2
    3
    4
    
    var a=3;
    var b=4;
    [b,a]=[a,b];//a=4,b=3;
    //数组解构按照顺序,可以设置默认值
    
  • 对象解构:

  • 对象解构是按照key解构;

  • 对象中方法解构出来后,成为全局函数,所以对象方法中一旦使用了this,不能解构,解构出来,this的指向发生了改变。===>window。

  • 对象解构中如果key名称同名,则可以使用起别名的方式另外命名。

  • 普通函数中传参,有默认值的参数一般写在必填后

  • 普通函数中实参的顺序必须和形参的顺序一致。

  • 参数赋值时如果整体设置默认值,在调用时如果赋值,默认值将会整体覆盖,不启用。单独设置默认值不会被覆盖。