es6-函数扩展

函数新增特性

  • 参数默认值
  • rest参数
  • 扩展运算符
  • 箭头函数
  • this绑定
  • 尾调用

参数默认值

注意:默认值后面必须都是带默认值的变量

{
  function test(x, y = 'world'){ // 默认值后面必须都是带默认值的变量
    console.log('默认值',x,y);
  }
  test('hello'); // hello world
  test('hello','kill'); // hello kill
}

参数默认值的作用域问题

{
  let x='test';
  function test2(x,y=x){
    console.log('作用域',x,y); 
  }
  test2('kill'); // kill kill
  test2() // undefined undefined,形参x只声明未赋值

  function testTwo(c,y=x){
    console.log('作用域',c,y); 
  }
  testTwo('kill') // kill test,这里取到外级作用域了
}

rest参数

{
  function test3(...arg){ // ...把参数转成数组,和es5中的arguments相似,但不会有arguments[0]的问题
    for(let v of arg){ // rest参数后不能有其他参数,会报错
      console.log('rest',v); 
    }
  }
  test3(1,2,3,4,'a'); // 1 2 3 4 a
}

扩展运算符

rest 参数逆运算

{
  console.log(...[1,2,4]); // 1 2 4,把数组转成离散的值
  console.log('a',...[1,2,4]); // a 1 2 4
}

箭头函数

{
  let arrow = v => v*2;
  let arrow2 = () => 5;
  console.log('arrow',arrow(3)); // 6
  console.log(arrow2()); // 5
}

注意 this 绑定的问题

尾调用

尾调用,函数的最后一句话是函数
作用,提升性能
场景,函数嵌套时

{
  function tail(x){
    console.log('tail',x);
  }
  function fx(x){
    return tail(x)
  }
  fx(123) // 123
}

推荐阅读更多精彩内容

  • 读秋,读你 文/木语 我读秋 读秋的荒凉 和那荒凉...
    木语MH阅读 189评论 3 11
  • 有人说 潜意识里 子会模仿父 但忠于母 女会模仿母 但会忠于父 如果父与母 两极相走 子与女就两极走 那何来的力量...
    骞卉阅读 528评论 0 1
  • 积极人生南京教育中心 积极人生教育由家庭教育专家郭宇宸、刘一凡两位导师携手创办,是一家专注于家庭教育的专业机构,是...
    积极人生南京教育中心阅读 1,940评论 0 2