JavaScript 中的Arguments.callee.caller 屬性棄用
允許存取呼叫函數的arguments.callee.caller 屬性是由於幾個問題,在JavaScript 中已棄用。
棄用的動機
命名函數表達式的替代方案
ECMAScript 3 引入了命名函數表達式作為解決方案:
[1,2,3,4,5].map(function factorial(n) { return (!(n>1))? 1 : factorial(n-1)*n; });
這種方法提供了幾個優點:
棄用Arguments.callee.caller
除了Arguments.callee 的問題之外,Function.caller 還具有效能影響並使最佳化變得困難。檢查呼叫堆疊的常數阻礙了內聯和其他最佳化。因此,為了消除這些問題,arguments.callee.caller 和 Function.caller 都被棄用。
儘管棄用,有些瀏覽器仍然支援這些屬性,但不鼓勵使用它們。最佳實踐是使用替代方法(例如命名函數表達式)來存取和管理呼叫鏈。
以上是為什麼 JavaScript 中不建議使用「arguments.callee.caller」屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!