T

JSLint: eval is evil

ここのところJavascriptをたくさん書いていて、多分この一ヶ月で書いた量はこれまでの一生に書いた分を越えていると思われるのだが、JSLintの存在を教えてもらった。

こっちはさすがに枯れていて、なるほどと思わせるところもたくさんある。どれも一発で通らなかったのは悲しいが。

しかし一点問題が。JSONの処理用にevalを使っている箇所で

Problem at line 28 character 47: eval is evil.
var res = eval( '(' + xh.responseText + '...

と、身も蓋もないことをいわれてしまう。

追記:「eval is evil」というキーワードで検索してくる人が多いみたいなので追記。JSLintでこのメッセージを出さないようにするには、ページ下部の「Tolerate eval(evalを許容する)」のチェックボックスをオンにしておく。

ちなみにevalについては以下のように説明されている。

eval関数(やFunction、setTimeout、setIntervalなど)を通じてJavaScriptコンパイラへのアクセスが可能になります。JSONのパースには有用ですが、その他のほぼ全ての場合にはコーディングがひどいことになっている証拠です。evalはJavaScriptの中で最も間違って利用されている関数なのです。

JSLintを作った人たちの考え方はこうだから、JSONをパースしている箇所でも無条件に「eval is evil(evalは邪悪です)」と警告される。

Posted by on 6月 28, 2007 in Javascript

コメントを残す