WebKitのバグ
こういうコードを書いた。
function inspect(evaluator) { var title = "code:", code; while ((code = prompt(title)) !== null) { title = evaluator(code); } } (function () { var i = 0; inspect(function (code) {return eval(code);}); })();
Firefoxだと
1 => 1 1 + 2 => 3 i => 0 arguments => [object Object]
という風にインタラクティブに実行できるのに対し、WebKitだと
1 => 1 1 + 2 => 3 i => エラーで止まる
となった。iが存在しないのは最適化の影響だと思って
(function () { var i = 0; inspect(function (code) {return eval(code);}); alert(i+1); })();
のようにiが必要になるようにしたけど変らず。
1 => 1 arguments => エラーで止まる
となったので、たぶん関数呼び出しの部分の最適化の部分にバグがあるのだろう。
function inspect(evaluator) { var title = "some code:", code; while ((code = prompt(title)) !== null) { title = evaluator(code); } } function foo() { var i = 0; inspect(function (code) {return eval(code);}); alert(i + 1); } foo();
とすると平気。