1

このJavaScriptコンプレッサーを使用して、「Base62Encode」をチェックしました。最初に行うことはすべてを関数で囲むことであることに気づきましたがeval()(これは理にかなっています)、実際には使用を避けたいと思います。代替手段はありますか?すぐに呼び出される関数式のように?

編集:

if特徴検出のための条件付きがたくさんあるので、コードを圧縮したいと思います。(私がModernizrを使用していない理由は、私が行っていることだけのためにライブラリ全体をロードしたくないためです)、そしてifsは醜いです。(さらに、私はjavascriptを初めて使用し、Modernizrを学ぶよりもjavascriptを学びたいと思っています)。

4

2 に答える 2

2

次のように、eval(...)を新しいFunction(...)()に置き換えることができます。

new Function(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2(a.6){3.4("5")[0].1+=" 6"}2(b.7){3.4("5")[0].1+=" 7"}2(8.9){3.4("5")[0].1+=" 9"}2(8.c){3.4("5")[0].1+=" d"}',14,14,'|className|if|document|getElementsByTagName|html|opacity|touch|html5|webworkers|css3|has|audio|html5audio'.split('|'),0,{}))()

これはそれほど改善されたものではありませんが、evalの使用を回避します。

于 2013-02-15T17:20:55.657 に答える
0

最初の検査では、ClosureCompileeval()はコードを呼び出しでラップしません。これは、GUIバージョンの使用に関するチュートリアルです。

于 2013-02-15T17:03:21.920 に答える