💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
函数的扩展分为几方面: 1、箭头函数 2、默认参数 # 箭头函数 箭头函数可以省略到很多东西,以使代码更加的简介优雅: a.可以省去function b.可以省去return c.省略括号 比如我们将一个数组的每一项求一个平方,在返回一个数组新数组 ![](https://img.kancloud.cn/c4/d3/c4d39023e09502bc9de24a9341564164_374x256.png) es5 和es6的写法一对比,是不是优雅简介了不少,爽到飞起有没有。 当然, 首先,我们上图中因为只有**一个参数**所以可以**省略掉括号**, 其次,当函数体只有一个 return语句时,可以省略掉外面的{ } 和return关键字。另外当 返回的是 一个对象时 因为 对象的 {} 会和函数体的{} 引发歧义,所以用()包起来,像这样。 ![](https://img.kancloud.cn/f3/0d/f30d33986aef1f8fee7d9a0845cb3e9b_289x44.png) 还需要注意一点 **this的指向** 这里有一个例子: ![](https://img.kancloud.cn/49/d3/49d34512ee5b2263e4e4cd25e7c22392_250x191.png) 输出结果: ![](https://img.kancloud.cn/52/ea/52ea2b3d3ee6c96443212a22c7c65b5e_411x64.png) 这里看到我们第二个箭头函数的this.a是undefined,为了看得更清楚一点,我们直接把this输出出来瞅瞅: ![](https://img.kancloud.cn/05/1f/051f62db98494a42e9a4d7902eb45af7_514x531.png) ![](https://img.kancloud.cn/f1/15/f1150c8feec6d496bd57b94e348f610b_340x203.png) es5中的this 是对象本身,而箭头函数的this, 在node环境下是一个空对象在浏览器下是全局的window对象。为什么这样呢,因为箭头函数有一个特性**它没有自己的this**,它的this是它被定义的时候,那个环境的this (特性有什么用呢?我们常常写react的就会知道,写一个自定义的时间,会在constract里写一个类似于 this.handleClick = this,handleClick.bind(this),如果我们用箭头函数即可省略bind this),在我们这里就是全局的this, 同时因为没有this,所以不能被当做构造函数用。 # 默认参数 ![](https://img.kancloud.cn/f5/e8/f5e8716fba901fb1df47cf353d1009b4_309x318.png) 需要注意一点,如果有多个参数,那么带默认参数的值最好放在尾部,因为只有值为undifine时才生效,不然会代码会不优雅。 ![](https://img.kancloud.cn/d4/37/d43726f61b202a43e68bbccb7c412c0b_255x56.png)