2012-06-24 4 views
11

Je joue avec un javascript et je cours une erreur. L'erreur est la suivante:JS Expression côté gauche invalide dans l'opération postfixe?

Expression côté gauche non valide dans l'opération postfixe.

Et le script est long mais je pense que c'est ce problème. Ce qui est bizarre, c'est que ça fonctionne quand je l'exécute localement, mais quand il est empaqueté, en utilisant asset_packager, il échoue.

Des idées pour lesquelles je pourrais avoir cette erreur?

MISE À JOUR: Après avoir fait plus de recherche j'ai trouvé cette fonction. L'erreur semble se produire après dans l'instruction "while" et je suppose que c'est le "++ + a +". C'est un plugin donc je ne voulais pas aller jouer avec le code ... mais est-ce que ça pourrait être ç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

Ce code fonctionne parfaitement. Je pense que l'erreur est dans une autre partie du code –

+2

Quel est sur la ligne l'erreur est rapportée? –

+0

Pourquoi transmettez-vous 'undefined' en tant que paramètre? –

Répondre

6

Cette erreur est en référence à un ++ ou -- suivant une référence non, comme une valeur renvoyée. Le problème est ailleurs dans votre code.

20

Vous n'avez pas dit quel plugin était-ce mais je faisais face au même problème, Jeffrey, avec le même plugin, je pense que mon code ressemblait presque au même.

J'ai suivi votre exemple. Le plugin était History.js, de la page: https://github.com/browserstate/History.js/ et j'utilisais la version html4 + html5, qui était minimisée, et qui passait par la compression gzip interne.

j'ai changé ce fragment

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

dans

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

Et il a fait le travail!

J'ai commencé à me demander quel était exactement le problème. Le suspect le plus important était bien sûr gzip. En situation normale, le code suivant est correct

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

Et retourne "begining of string 1 the rest of string"

Cependant la compression gzip se débarrasse de l'espace blanc et il se transforme en quelque chose qui est compris par un navigateur comme:

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

Ce qui nous donne l'erreur Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

Comme je pensais - c'était un problème de gzip. Il a supprimé un caractère blanc trop. Utilisait la méthode gzencode($content, 9, FORCE_GZIP) sur PHP Version 5.4.8-1

+0

Vous avez sauvé mon homme de jour! Merci beaucoup! – daveoncode

+0

Avait le même problème avec l'histoire.js et en utilisant WP Minify plugin pour wordpress. Merci beaucoup! – r8n5n

+0

SUPER !!! résolu mon problème dans la production! – parajao

Questions connexes