函数扩展

  • 默认参数
// 有些参数不传参的话会有默认值
//es5-->>    if(typeof url === undefined) throw Error('url不能为空')
// es6
function ajax(url=new Error('url不能为空'),method='GET',dataType='json'){
  console.log(url)
  console.log(method)
  console.log(dataType)
}
// 不传参数会使用默认参数
ajax() //[object Error] 'GET' 'json'
// 传参数会使用传入的参数
ajax('/xxx','POST','HTML') // '/xxx' 'POST' 'HTML'
  • 剩余操作符
function sum(prefix,...rest){
  // rest = [1,2,3,4,5]
  let sum = 0
  //循环数组的每个元素,把它们依次传入对应的参数
  rest.forEach(item => {
    sum+= item
  })
  return prefix + (sum)
}
console.log(sum('$',1,2,3,4,5)) //传入5个数字
  • 数组常用方法之reduce(计算,把数组中的元素变成一个值)
let arr = [1,2,3]
// value代表当前值,item代表数组元素,index代表数组索引,origin代表原始数组
// reduce有两个参数,第一个参数是函数,第二个函数是初始值
let result = arr.reduce(function(value,item,index,origin){
  return value + item //返回值会赋值给下一个函数执行时的value
},0)
console.log(result)
  • 展开操作符
let arr1 = [1,2,3]
let arr2 = [4,5,6]
//把数组中的元素打散,依次放入
let arrMege = [...arr1,...arr2]
console.log(arrMege) // [1,2,3,4,5,6]
// 求一个数组中的最大值
let arr = [1,2,3,100,5]
let max = Math.max(...arr) //100
let obj1 = {age: 1,height: '1.85'}
let obj2 = {name: 'hzj'}
let obj3 = {...obj1,...obj2}
let obj4 = {}
//浅拷贝,引用同一个地址
console.log(obj3) //{age: 1,height: '1.85',name: 'hzj'}
Object.assign(obj4,obj1,obj2) //{age: 1,height: '1.85',name: 'hzj'}
  • 对象的方法简写
let obj = {
  getSum(a,b) {
    return a + b
  }
}
console.log(obj.getSum(1,2)) // 3
  • 箭头函数

你可能感兴趣的:(函数扩展)