Arguments.callee.caller プロパティが JavaScript で非推奨になった理由
JavaScript では、arguments.callee.caller が導入されましたが、その後非推奨になりました。ただし、一部のブラウザではまだサポートされていますが、完全に省略されているブラウザもあります。疑問が生じます: この一見便利な機能はなぜ放棄されたのでしょうか?
再帰の必要性
JavaScript の初期バージョンでは、名前付き関数式はサポートされていませんでした。このため、再帰関数式の作成が困難になりました。
たとえば、階乗関数を考えてみましょう。
[1,2,3,4,5].map(factorial);
名前付き関数式がないと、このコードは機能しません。 argument.callee プロパティは次の解決策を提供しました:
[1,2,3,4,5].map(function(n) { return (!(n>1))? 1 : arguments.callee(n-1)*n; });
Arguments.callee の欠点
ただし、arguments.callee にはいくつかの欠点がありました:
ECMAScript 3 の解決策
ECMAScript 3 では名前付き関数式が導入され、arguments.callee.
例:
[1,2,3,4,5].map(function factorial(n) { return (!(n>1))? 1 : factorial(n-1)*n; });
このアプローチには、arguments.callee:
に比べていくつかの利点があります。結論
arguments.callee.caller の非推奨は、JavaScript の改善に不可欠でした。最適化機能と、関数呼び出し中の一貫した動作の確保。名前付き関数式は、再帰と呼び出しコンテキストへのアクセスのための、より信頼性が高く効率的な代替手段を提供します。
以上が`arguments.callee.caller` が JavaScript で非推奨になったのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。