當內部函式的返回值也是外部函式的返回值時,引擎把外部函式的棧幀彈出也無影響
外部函式的返回值是乙個內部函式的返回值,滿足以下條件即可以:
外部函式的返回值是對尾呼叫函式的呼叫 +
尾呼叫函式返回後不需要執行額外的邏輯+
尾呼叫函式非閉包
//比如遞迴使用尾呼叫優化
//基礎框架
function
fib(n)
//執行遞迴
function
fibimpl(a, b, n)
return fibimpl(b, a + b, n - 1);
}這樣重構之後,就可以滿足尾呼叫優化的所有條件,再呼叫 fib(1000)就不會對瀏覽器造成威脅了
尾呼叫優化
尾呼叫 tail call 是函式式程式設計的乙個重要概念,本文介紹它的含義和用法。一 什麼是尾呼叫?尾呼叫的概念非常簡單,一句話就能說清楚,就是指某個函式的最後一步是呼叫另乙個函式。function f x 上面 中,函式f的最後一步是呼叫函式g,這就叫尾呼叫。以下兩種情況,都不屬於尾呼叫。情況一...
尾呼叫優化
本文 日期 2015年4月10日 尾呼叫 tail call 是函式式程式設計的乙個重要概念,本文介紹它的含義和用法。尾呼叫的概念非常簡單,一句話就能說清楚,就是指某個函式的最後一步是呼叫另乙個函式。function f x 上面 中,函式f的最後一步是呼叫函式g,這就叫尾呼叫。以下兩種情況,都不屬...
尾呼叫優化
尾呼叫的概念非常簡單,一句話就能說清楚,就是指某個函式的最後一步是呼叫另乙個函式。function f x 上面 中,函式f的最後一步是呼叫函式g,這就叫尾呼叫。以下兩種情況,都不屬於尾呼叫。情況一 function f x 情況二 function f x 上面 中,情況一是呼叫函式g之後,還有別...