es6箭头函数_ES6 学习箭头函数一些别的用法,以及尾调用优化的方法【08】

本文详细讲解了ES6中的箭头函数新用法,包括sort()方法应用、arguments替代与rest运算符,以及尾调用优化的概念、规则和应用场景。重点介绍了严格模式下的尾调用优化技巧,适合递归和性能敏感的场景。
摘要由CSDN通过智能技术生成

c4bba267e21d0ff13e45b64fee491cdd.gif

学习要点:1.箭头扩展 2.尾调用优化

本节课我们来开始学习箭头一些别的用法,以及尾调用优化的方法。

一.箭头扩展

1. 箭头也支持一些内置函数的使用,比如 sort()排序;

//ES6let arr=[3,1,2].sort((a,b)=> a-b);console.log(arr);//ES5let arr=[3,1,2].sort(function(a,b){    return a-b;});console.log(arr);

2. 箭头函数不支持 arguments 绑定,请直接使用...other 模式(rest 运算符);

//此写法不支持let fn=(x,y)=>{    return arguments[0] + arguments[1];}console.log(fn(10,20)); //arguments is not defined//不确定参数,使用...let fn=(...other)=>{    return other[0]+other[1];}console.log(fn(10,20)); //30

3. 箭头函数和普通函数一样,都可以被 typeof 和 instanceof;

let fn=(...other)=>{    return other[0]+other[1];}console.log(typeof fn); //functionconsole.log(fn instanceof Function); //true

1a2a52c49eaad43b64a1d8cb1956932c.png

二.尾调用优化

1. 什么是尾调用?即在一个函数的最后可执行的一步调用了其它函数;

function go(x){    return x+20;}let fn=function(x){    return go(x);}console.log(fn(10)); //30

2. 那?什么又是尾调用优化?为何要优化?因为:每次尾调用都会创建栈帧;

3. 如果尾调次数过多,而内存中的调用栈越来越大,可能就会出现程序问题;

4. 尤其是在递归函数的问题上,尾调用优化适合在这种场景中使用;

5. 首先要说明,尾调用优化必须是在 ES6 的严格模式下,'use strict';

6. 严格模式,可以设置为全局作用域,也可以在函数体内有效;

7. 严格模式对变量、对象和函数做了一些代码规范等等,具体规范可以搜索;

8. 而对于尾调用,必须严格按照三个规则,才能执行严格模式下的优化,如下:

1) 尾调用必须 return 返回; // go(x); 错误 

2) 尾调用 return 返回不得含其它操作 // return go(x) + 1; 错误 

3) 尾调用 return 返回的不是函数,而是函数赋值的变量,不在尾部; //let result = go(x); //return result;

"use strict";function fn(x) {    if (x <= 1) {        return 1;    }    return fn(x - 1);}console.log(fn(10));

7c6413362492c9d216f95ef3008abb98.png

如果您觉得有用,记得在下方点赞、关注、留言,小编会定期奉上更多的惊喜哦,您的打赏支持才是小编继续努力的动力,么么哒。

每日分享在学习过程中总结的学习经验,学习笔记,笔试题,HTML,CSS,JavaScript,jQuery教程,Vue教程,PHP教程,TinkPHP教程等,望大家能以学习为目的,每天阅读一篇文章,了解身边的技术,陪有梦想的人一起成长!

3eec1171d5d241eccd20a797bc75d9e1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值