1. 程式人生 > 其它 >ES6 07箭頭擴充套件和尾呼叫

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);