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
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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

友情链接更多精彩内容