仕様書を読んで見つけた、変な仕様を紹介していくコーナーです。
せっかくなのでクイズ形式で。
今回は関数の再帰呼び出しに関する仕様です。
問題
以下のコードでは、最後の console.log
でなんと出力されるでしょうか?
// 1回だけ再帰的に foo を呼び出し、"foo"を返す。
function foo(check) {
if (check) return "foo";
else return foo(true);
}
// 1回だけ再帰的に bar を呼び出し、"bar"を返す。
var bar = function bar(check) {
if (check) return "bar";
else return bar(true);
};
// 上書きする
var hoge = foo;
var fuga = bar;
foo = bar = function() { return "none"; };
console.log(hoge(), fuga()); // ???
選択肢
foo bar
foo none
none bar
none none
答えと解説