arguments.calleeについては多くの誤りがあり、実行可能なES5 の厳格なモードの代替手段に実際に置き換えることができないユースケースが存在するかどうかを理解しようとしています。
MDN の arguments.calleeドキュメントでは、arguments.callee の使用を指摘していますが、以下のコード例では適切な代替手段はありません。
function createPerson (sIdentity) {
var oPerson = new Function("alert(arguments.callee.identity);");
oPerson.identity = sIdentity;
return oPerson;
}
var john = createPerson("John Smith");
john();
彼らはバグを包括的にリンクして、argument.calleeをES5 strict modeに準拠したコードに置き換えることができない場合があることを示しました。
ただし、例として使用したコードは、次の厳格モードの代替手段に置き換えることができます。
"use strict";
function createPerson(sIdentity) {
var oPerson = function () {
alert(oPerson.identity);
};
oPerson.identity = sIdentity;
return oPerson;
}
var john = createPerson("John Smith");
john();
それを指摘して、arguments.calleeを置き換えることができないいくつかのアルゴリズムが実際に存在しますか?
バウンティ
arguments.callee
報奨金を獲得するために、別のソリューションを使用することがはるかに不明瞭または不可能になる場所の使用法を回答に含めたいと思います。
MDN の例では、代替として私が書いたバージョンは、そのコードの使用法を変更しません。