miau's blog?

eval() の文字数制限

どうでもいいメモ。PCサイトビューアで eval() する場合、その文字列長は 2^18 = 262144 付近まで OK。

今作ってる bookmarklet の動作がおかしくて、eval() に文字数制限があるのかと疑ったけど・・・これだけ長い文字列を eval() できってことは違うっぽい。


(2006/09/26 追記)
原因判明。どうも eval() 内でループ用変数を置き換えてるのが問題っぽい。

(function() {
var l = document.scripts.length;
for (var i = 0; i < l; i++) {
eval(document.scripts[i].text);
}
})()

みたいなことをやってたんだけど、eval 内部で l とか i とかが変更されていた、と。

(function() {
var l = document.scripts.length;
for (var i = 0; i < l; i++) {
Function(document.scripts[i].text).apply(window);
}
})()

こんな感じでよさげ。
window は省略できそうだけど、まぁいいや。

posted at 19:28:04 on 2006-09-25 by miau - Category: W41CA No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。