15

我正在使用 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
        }
4

2 回答 2

23

你没有说是哪个插件,但我正在处理同样的问题,杰弗里,我认为是同一个插件,因为我的代码看起来几乎一样。

我听从了你的引导。该插件是 History.js,来自页面: https ://github.com/browserstate/History.js/ ,我使用的是捆绑的 html4+html5 版本,该版本已最小化。

我改变了那个片段

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

进入

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

它完成了这项工作!

我开始怀疑到底是什么问题。最重要的嫌疑人当然是缩小“压缩”。在正常情况下,以下代码是正确的

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

并返回"begining of string 1 the rest of string"

然而,缩小消除了空白并将其变成了浏览器可以理解的内容:

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

是什么给了我们错误Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

编辑:正如Sam指出的,问题是由缩小引起的,而不是 gzip 压缩,当然:)

于 2013-01-11T13:33:51.160 回答
8

此错误是对一个++或非--引用的引用,例如返回值。问题出在代码中的其他地方。

于 2012-06-24T03:41:08.697 回答