2012-06-24 6 views
11

Sto giocando con un javascript e sto correndo in un errore. L'errore è questo:JS Espressione lato sinistro non valida nell'operazione Postfix?

Espressione lato sinistro non valida nell'operazione Postfix.

E la sceneggiatura è lunga ma penso che questo sia questo problema. La cosa strana è che funziona quando lo eseguo localmente, ma quando è pacchettizzato, usando asset_packager, fallisce.

Qualche idea per cui potrei ottenere questo errore?

AGGIORNAMENTO: Dopo aver effettuato ulteriori ricerche, ho trovato questa funzione. L'errore sembra verificarsi dopo l'istruzione "while" e presumo che sia "++ + a +". Questo è un plug-in quindi non volevo andare a scherzare con il codice ... ma pensi che potrebbe essere?

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

Questo codice funziona perfettamente. Penso che l'errore sia in un'altra parte del codice –

+2

Qual è la linea in cui è segnalato l'errore? –

+0

Perché stai passando a 'undefined' come parametro? –

risposta

6

Questo errore è in riferimento ad una o ++-- seguito di una non riferimento, ad esempio un valore restituito. Il problema è da qualche altra parte nel tuo codice.

20

Non hai detto quale plugin fosse quello, ma avevo a che fare con lo stesso problema, Jeffrey, con lo stesso plugin, perché il mio codice sembrava quasi lo stesso.

Ho seguito il tuo esempio. Il plug-in era History.js, dalla pagina: https://github.com/browserstate/History.js/ e stavo usando la versione html4 + html5 in bundle, che è stata ridotta a icona, eppure stava attraversando la mia compressione gzip interna.

ho cambiato quel frammento

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

in

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

E ha fatto il lavoro!

Ho iniziato a chiedermi in che cosa consistesse esattamente il problema. Il sospetto più importante era ovviamente gzip. In situazione normale seguente codice è corretto

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

e restituisce "begining of string 1 the rest of string"

Tuttavia la compressione gzip si libera di spazio bianco e lo trasforma in qualcosa che è compreso da un browser come:

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

Che cosa ci dà errore Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

Come pensavo - era un problema gzip. Ha rimosso un carattere bianco troppo. Utilizzo del metodo gzencode($content, 9, FORCE_GZIP) su PHP Versione 5.4.8-1

+0

Hai salvato il mio uomo giorno! molte grazie! – daveoncode

+0

Aveva lo stesso problema con la cronologia.js e usando il plugin WP Minify per wordpress. Grazie mille! – r8n5n

+0

GRANDE !!! risolto il mio problema in produzione! – parajao

Problemi correlati