1. 程式人生 > >尾調用優化

尾調用優化

程序 數值 mage 滿足 變量 循環 並且 pan 實現類

尾調用指的是函數作為另一個函數的最後一條語句被調用。

技術分享圖片

在ES5的引擎中,尾調用的實現和其他函數調用實現類似:

創建一個新的棧幀,將其推入調用棧來表示函數調用,也就是說,在循環調用中,每一個未用完的棧幀都會被保存在內存中

當調用棧變得過大時會造成程序問題

ES6中的尾調用優化

ES6縮減了嚴格模式下尾調用棧的大小(非嚴格模式不受影響)

如果滿足以下條件,尾調用將不再創建新的棧幀,而是清除並且重用當前棧幀。

(1)尾調用不訪問當前棧幀的變量(也就是說函數不是一個閉包)

(2)在函數內部,尾調用是最後一條語句

(3)尾調用的結果作為函數值返回

尾調用優化