星期四, 4月 14, 2011

把 eval() 包起來,放到 global scope

YUI Compressor 壓縮時發現在 local scope 裡面用 eval() 會造成 YUI Compressor 保留變數名稱。

找了一下資料找到解法 (然後很多投影片都一再的提出「eval is evil」XD),用另外一個 function 把 eval 包起來,丟到 global sope 裡面。像是這樣:
// It's global...
function myEval(c) { return eval(c); }

(function(){
    // Now it's local...
    myEval('...');
})();
當然,這個方法會讓 code 沒辦法看到 function scope 內的資料...

沒有留言: