ES6 07箭头扩展和尾调用

  // 要点:1.箭头扩展 2.尾调用   // 一.箭头扩展 // 1.箭头也支持一些内置函数的使用,例sort()排序 // let arr=[3,1,2].sort((a,b)=>(a-b)); // console.log(arr);

 

// 翻译后代码 // let arr=[3,1,2].sort(function(a,b){ //     return a-b; // })

 

// 2.箭头函数不支持arguments绑定,直接可使用...other模式(rest运算符) // 下面写法不支持 // let fn=(x,y)=>{ //     return arguments[0] + arguments[1] // }

 

// 不确定参数,使用... let fn=(...other)=>{     return other[0] + other[1] } console.log(fn(10,20)); // 3.箭头函数和普通函数一样,都可以被typeof和instanceof console.log(typeof fn); console.log(fn instanceof Function);

 

// 二.尾调用优化 // 1.什么是尾调用,一个函数的最后可执行的一步调用了其他函数 // function go(x){ //     return x+20; // } // let fn=function(x){ //     return go(x); // } // console.log(fn(10)); // 2.那什么是尾调用优化?为何要优化?因为:每次尾调用都会创建栈帧 // 3.尾调用次数过多,内存中调用的栈越来越大,可能会出现程序问题 // 4.特别在递归函数问题上,尾调用优化适合在这种场景中使用 // 5.尾调用优化必须在ES6的严格模式下,'use strict' // 6.严格模式,可以设置为全局作用域,也可在函数体内有效 // 7.严格模式对变量、对象和函数做了一些代码规范等等 // 8.面对尾调用,必须严格按照三个规则,才能执行严格模式下的优化 // ①尾调用必须return返回  go(x)错误 // ②尾调用return返回的不是函数,而是函数赋值的变量,不在尾部 // let result=go(x); // return result; 'use strict' function fn(x){     //console.log(x);     if(x<=1){           return 1;     }     return fn(x-1); } fn(10);

 

上一篇:numpy学习07 切片操作和掩码操作


下一篇:JDK的安装与卸载