ES6(二)

ES6函数扩展

1.允许函数有默认值,可以直接在参数后面设置

2.引入rest参数(...变量名)

获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,

function sum(prefix, ...rest) {
  //rest = [1,2,3,4];
  //1.循环求合
 /* let result = 0;
  //循环数组中的每个元素,把它们依次传入对应的函数
  rest.forEach(function(item){
    result+=item;
  })*/
  
  //return prefix + (result);
}
console.log(sum('$', 1, 2, 3, 4));

reduce

reduce 计算 汇总 收敛  把一个数组中的一堆值计算出来一个值

let result = arr4.reduce(function(val,item,index,origin){
  console.log(item,index);
  let sum =  val + item;//返回值会成为下一次函数执行的时候的val
  if(index == 0){
    return sum/origin.length;
  }else{
    return sum;
  }
},0);
console.log(result);

reduceRight 从右向左收敛

Array.prototype.reduceRight = function(reducer,initialVal){
  for(let i=this.length-1;i>=0;i--){
     initialVal = reducer(initialVal,this[i],i,this);
   }
   return  initialVal;
 }
 let result = arr4.reduceRight(function(val,item){
   return val+item;
 },0);
 console.log(result);

展开运算符 ...

展开运算符相当于把数组中的每个元素依次取出来放进去

let arr5 = [1,2,3];
let arr6 = [4,5,6];
let arr7 = [...arr5,...arr6];
console.log(arr7);
解析成ES5
let arr7 = [].concat(arr5,arr6);

let max = Math.max(...arr6)
解析成ES5
let max = Math.max.apply(Math,arr6);

对象解构

let obj1 = {name:'1'};
let obj2 = {age:2};

obj3 = {...obj1,...obj2};
console.log(obj3);//{name:'1',age:2}

ES5对象赋值
1.for循环
for(let key in obj1){
  obj3[key] = obj1[key];
}
for(let key in obj2){
  obj3[key] = obj2[key];
}

2.assign
Object.assign(obj3,obj1,obj2)

箭头函数

1.箭头函数没有自己的this,他会使用上层this

let obj = {
  name:'px',
  getName(){
    let self=this;
    setTimeout(function(){//Timeout
      //console.log(this); //undefind
      console.log(this.name); //px
    },1000)
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值