我正在使用javascript并遇到错误。错误是这样的:
后缀操作中的左侧表达式无效。
脚本很长但我觉得这就是这个问题。奇怪的是,当我在本地运行它时,这是有效的,但当它打包时,使用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
}
答案 0 :(得分:22)
你没有说哪个插件是那个,但我正在处理同样的问题,Jeffrey,我认为同一个插件,因为我的代码看起来几乎一样。
我跟着你的领导。插件是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)
答案 1 :(得分:6)
此错误是针对非引用后的++
或--
引用的,例如返回的值。问题出在代码中的其他地方。