2012-06-24 83 views
11

我正在玩一個JavaScript,並遇到一個錯誤。錯誤是這樣的:JS後綴操作中的左側表達式無效?

後綴操作中的左側表達式無效。

腳本很長,但我認爲這是這個問題。奇怪的是,當我在本地運行它時會起作用,但是當它被打包時,使用asset_packager時會失敗。

任何想法,爲什麼我可能會得到這個錯誤?

更新:經過更多的研究,我發現這個功能。錯誤似乎發生在「while」語句之後,我認爲它是「++ + a +」。這是一個插件,所以我不想去搞亂代碼......但是你可能會這樣做嗎?

m.getInternetExplorerMajorVersion = function() { 
      var a = m.getInternetExplorerMajorVersion.cached = typeof m.getInternetExplorerMajorVersion.cached != "undefined" ? m.getInternetExplorerMajorVersion.cached : function() { 
       var a = 3, b = d.createElement("div"), c = b.getElementsByTagName("i"); 
       while ((b.innerHTML = "<!--[if gt IE "++ + a + "]><i></i><![endif]-->") && c[0]) 
Uncaught ReferenceError: Invalid left-hand side expression in postfix operation 
        ; 
       return a > 4 ? a : !1 
      }(); 
      return a 
     } 
+2

此代碼完美工作。我認爲錯誤在代碼的另一部分 –

+2

錯誤報告的內容是什麼? –

+0

你爲什麼要傳遞'undefined'作爲參數? –

回答

6

這個錯誤是在參照++--以下非引用,如返回的值。問題在你的代碼中的其他地方。

20

你沒有說哪個插件是這樣的,但我正在處理同樣的問題,傑弗裏,我想同一個插件,因爲我的代碼看起來幾乎相同。

我跟着你的領導。該插件是History.js,來自頁面: https://github.com/browserstate/History.js/並且我使用了捆綁的html4 + html5版本,這個版本已經最小化了,但是正在經歷我的內部gzip壓縮。

我改變了片段

innerHTML="<!--[if gt IE "+ ++a+"]><i></i><![endif]-->" 

innerHTML="<!--[if gt IE "+ (++a)+"]><i></i><![endif]-->" 

它做的工作!

我開始想知道究竟是什麼問題。最重要的嫌疑犯當然是gzip。在下面的代碼正常情況下是正確的

var a=0; "begining of string "+ ++a+" the rest of string"; 

,並返回"begining of string 1 the rest of string"

然而,gzip壓縮擺脫的白色空間,把它變成的東西是由瀏覽器理解爲:

var a=0;"begining of string "+++a+" the rest of string"; 

什麼給我們錯誤Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

正如我以爲 - 這是gzip問題。它刪除了一個白色字符太多。 使用PHP版本5.4.8-1上的方法gzencode($content, 9, FORCE_GZIP)

+0

你救了我一天的男人!非常感謝! – daveoncode

+0

與歷史有同樣的問題。js和使用WP Minify plugin for wordpress。非常感謝! – r8n5n

+0

太棒了!解決了我在生產中的問題! – parajao

相關問題