script要素のバグを修正

script要素の処理でバグ

version 8 betaのテストを繰り返していましたが、script要素でバグがありました。

with構文で囲ったスクリプトについて

たとえば、以下のようなコードがあったとします。

function a() {
 document;
};

ベータ版では、これをwith構文で囲ってサンドボックスを実現しようとしました。

with ({document: NAIBU.document}){
  function a() {
    document; //NAIBU.document ?
  };
}

ところが、上のコードは、functionの巻上げによって、次のようなコードと同等となってしまいます。

function a() {
  document; //NAIBU.documentではない
};
with ({document: NAIBU.document}){
}

したがって、上記の変数documentは、サンドボックス内に閉じ込めておくことができず、予想とは違う値を返してきます。

ベータ版の修正

そこで、ベータ版を修正したのですが、さまざまな方法があります。他にもscript要素関連には、バグがあるとみて、テストを繰り返しながら、修正していきます。