ES6__函数的扩展

  1 /**
  2  * 函数的扩展
  3  *  1 为函数参数指定默认值
  4  *  2 函数的 rest 参数
  5  *  3 箭头函数
  6  */
  7 
  8 // ------------------------------------------------
  9 
 10 // function fn(a, b){
 11 //   a = a || 10;
 12 //   b = b || 20;
 13 //   console.log(a + b);
 14 // }
 15 
 16 // fn();
 17 // fn(0, 10);
 18 
 19 // function fn(a = 10, b = 20){
 20 //   console.log(a + b);
 21 // }
 22 // 
 23 // fn();
 24 // fn(0, 10);
 25 
 26 
 27 // ----------------------------------------------
 28 //rest 参数形式为(“...变量名”),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
 29 
 30 // function sum(){
 31 //   var args = arguments;
 32 //   var res = 0;
 33 //   for(var i=0; i<args.length; i++){
 34 //     res += args[i];
 35 //   }
 36 //   console.log(res);
 37 // }
 38 // 
 39 // sum(1, 2, 3, 4, 5);
 40 //只能在...arr之前添加参数
 41 // function sum(a, ...arr, b){
 42 //   var res = a;
 43 //   for(var i=0; i<arr.length; i++){
 44 //     res += arr[i];
 45 //   }
 46 //   console.log(res);
 47 // }
 48 // 
 49 // sum(10, 1, 2, 3, 4, 5);
 50 
 51 // -----------------------------------------------
 52 // 使用“箭头”(=>)定义函数。
 53 
 54 // const fn = a => a;
 55 // 
 56 // const fn2 = function (a){
 57 //   return a;
 58 // };
 59 // 
 60 // console.log(fn(1));
 61 // console.log(fn2(2));
 62 
 63 // const fn = (a, b) => a + b;
 64 // 
 65 // console.log(fn(1, 2));
 66 
 67 // const fn = (a, b) => {
 68 //   a = a * 2;
 69 //   b = b * 2;
 70 //   return a + b;
 71 // };
 72 // 
 73 // console.log(fn(1, 2));
 74 
 75 // const fn = (a, b) => ({a, b});
 76 // 
 77 // console.log(fn(1, 2));
 78 
 79 // var arr = [5, 2, 3, 4, 1];
 80 
 81 // arr.sort(function (a, b){
 82 //   return a - b;
 83 // });
 84 // 
 85 // console.log(arr);
 86 
 87 // arr.sort((a, b) => a - b);
 88 // 
 89 // console.log(arr);
 90 
 91 // 1 箭头函数体内没有自己的this对象,所以在使用的时候,其内部的this就是定义时所在环境的对象,而不是使用时所在环境的对象。
 92 
 93 // function fn(){
 94 //   setTimeout(function (){
 95 //     console.log(this);
 96 //   }, 1000);
 97 //   setTimeout(() => {
 98 //     console.log(this);
 99 //   },1000);
100 // }
101 // 
102 // var obj = {a: 1};
103 // 
104 // fn.call(obj);
105 
106 // 不能给箭头函数使用 call apply bind 去改变其内部的this指向
107 
108 // 2 箭头函数体内没有arguments对象,如果要用,可以用Rest参数代替。
109 
110 // function fn(){
111 //   setTimeout(() => {
112 //     console.log(arguments);
113 //   }, 1000)
114 // }
115 // 
116 // fn(1, 2, 3);
117 
118 // const fn = (...arr) => arr;
119 // 
120 // console.log(fn(1, 2, 3, 4));
121 
122 // 3 不可以当作构造函数,不可以使用new命令,否则会抛出一个错误。
123 
124 // const Fn = (a, b) => a + b;
125 
126 // const f = new Fn(1, 2);  报错
127 
128 
129 //4.箭头函数不能用Generator函数。

 

posted @ 2018-04-09 14:36  晓之殇  阅读(236)  评论(0编辑  收藏  举报