// 翻译后代码 // 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);