Подтвердить что ты не робот

JS Недопустимое выражение левой стороны в операции постфикса?

Я играю с javascript и нахожусь в ошибке. Ошибка заключается в следующем:

Недопустимое выражение левой стороны в операции postfix.

И сценарий длинный, но я думаю, что это проблема. Странно, что это работает, когда я запускаю его локально, но когда он упакован, используя 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
        }
4b9b3361

Ответ 1

Вы не сказали, какой плагин был тем, но я имел дело с той же проблемой, Джеффри, я думаю, тот же плагин, потому что мой код выглядел почти так же.

Я последовал твоему примеру. Плагин был 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. Он слишком сильно удалил одного белого персонажа. Использовал метод gzencode($content, 9, FORCE_GZIP) на PHP версии 5.4.8-1

Ответ 2

Эта ошибка относится к значению ++ или -- после не ссылки, например, возвращаемого значения. Проблема в другом месте вашего кода.