1
我正在使用jsio(jslibs - http://code.google.com/p/jslibs/wiki/jsio),並且正在運行Safari中的一個錯誤。 意外的令牌'='Safari上的JS Bug:意外的令牌'='
問題在於這部分代碼。
this.debugPath = function(path) { return path; }
// IE6 won't return an anonymous function from eval, so use the function constructor instead
var rawEval = (typeof eval('(function(){})') == 'undefined')
? function(src, path) { return (new Function('return ' + src))(); }
: function(src, path) { var src = src + '\n//@ sourceURL=' + path; return window.eval(src); };
// provide an eval with reasonable debugging
this.eval = function(code, path, origCode) {
......................
該問題似乎是在rawEval
被分配的行。評論它導致錯誤轉移到其他地方。有沒有人遇到過這個問題?
幫助?
謝謝。
'function(src,path){var src = src ...}'可能是越野車。你使用'src'來聲明一個局部變量,但它不是局部變量。你最終會覆蓋同名的形式參數。 – 2012-01-13 05:22:25
順便說一句,'new Function(...)'在全局範圍內綁定,而在ES3下'window.eval'綁定在調用範圍內,所以這兩個不等價。解決IE6 eval問題的一種方法是在您正在評估的表達式文本前添加字符串「0」。 – 2012-01-13 05:24:28
@MikeSamuel:你的意思是以下嗎?試過但沒有工作。 '變種rawEval =函數(SRC,路徑){' \t'返回的eval( 「0」 + SRC + '\ n // @ sourceURL =' +路徑);'' };' – Navneet 2012-01-15 03:06:14