ES6

严格模式必须遵循以下规则:

  变量名必须声明后再使用

  函数的参数不能同名

  不能使用with语句

  不能对只读属性赋值

  不能使用前缀0表示八进制数

  不能删除不可删除的属性

  eval不会再它的外层作用域引入变量

  eval和arguments不能被重新赋值

  不能使用arguments.callee、arguments.callee.caller

  禁止this指向全局对象window

  不能使用fn.caller和fn.arguments获取函数调用堆栈

  增加保留字(比如protected、static、interface)

 

箭头函数:

  箭头函数是对JavaScript this绑定错误的处理。

  目前掌握的this用法:

      this 在对象的属性中,指向window

      this 在对象的方法中,指向调用该方法的对象

      this 在回调函数中使用,会指向window因为在回调函数中,this指向哪个函数都会说不通,因此this自动会重新指向window

      this 在事件侦听函数中使用,this指向添加事件侦听的对象

      this 在箭头函数中,指向函数外部

 

Symobl:

    表示独一无二的。作用:消除魔术字符串,设置对象的属性不可修改

 

生成器函数:

  

 1 function* fn(a,b){
 2             yield a;
 3             a++;
 4             yield a;
 5             yield b;
 6             b++;
 7             yield b;
 8             yield a+b;
 9             return a+b;
10         } 
11         var a=fn(3,4);
12         /* console.log(a.next());
13         console.log(a.next());
14         console.log(a.next());
15         console.log(a.next());
16         console.log(a.next());
17         console.log(a.next()); */
18         for(let value of a){
19             console.log(value);
20         }

 

解构赋值:

  解构赋值分为两种: 数组的解构赋值,对象的解构赋值

  作用1:交换值

          [arr[i],arr[i+1]] = [arr[i+1],arr[i]];  
 
  作用2:给函数参数设置初始值
  
  
1         function fn([a,b=2]){
2             console.log(a,b);
3         }
4         fn([3,5]);     // 3 , 5
5         fn([4]);       // 4, 2

  

  作用和数组解构的作用因该是一致的

        如果多重对象解构时,属性名相同,可以使用:设置新的属性名
          var {a,b:{a:a1}} = {a:1,b:{a:2}};  console.log(a,a1); // 1,2 
        输出b的话会报错,因为b属性被解构了,就不存在了,所以要重新设置b属性,如果要输出b,就得在写一个。
          var {a,b:{a:a1},b} = {a:1,b:{a:2}};  console.log(a,a1,b); // 1, 2, {a:2} 

 

posted @ 2020-01-10 22:38  早点睡觉吧  阅读(104)  评论(0编辑  收藏  举报