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
}
Ответы
Ответ 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
Эта ошибка относится к значению ++
или --
после не ссылки, например, возвращаемого значения. Проблема в другом месте вашего кода.