まあ、それを呼び出すために使用することもできarguments.callee
ますが、それは悪い考えであり、パフォーマンスに影響を与え、厳密なモードでは有効ではありません。
あなたが引用したものは有効なJavaScriptであり、それと一緒にある場合は別の関数を呼び出さないでください。残念ながら、IE8以前では、名前が周囲のスコープに誤ってリークされるためです(名前付き関数式は、関数宣言のように周囲のスコープに関数名を追加しません—IE8以前を除いて[そしてそれだけではありません]彼らは彼らと間違えます])。check
check
check
したがって、解決策は無名関数を使用して名前付き関数を非表示にすることです。
(function() {
// A check function
check();
function check () {
if (typeof foo !='undefined') {
// do stuff
} else {
console.log("Failed to load, trying again");
setTimeout(function(){ check(); }, 10);
}
}
})();
(function() {
// A complete different one
check();
function check () {
if (typeof foo !='undefined') {
// do other stuff
} else {
console.log("Failed to load, trying again");
setTimeout(function(){ check(); }, 10);
}
}
})();