読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

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();

とすると平気。