Все работает нормально, когда я написал логику js в закрытии как один файл js, например:
(function(win){
//main logic here
win.expose1 = ....
win.expose2 = ....
})(window)
но когда я пытаюсь вставить альтернативную функцию ведения журнала перед этим закрытием в тот же файл js,
window.Glog = function(msg){
console.log(msg)
}
// this was added before the main closure.
(function(win){
//the former closure that contains the main javascript logic;
})(window)
он жалуется на ошибку TypeError:
Uncaught TypeError: (intermediate value)(...) is not a function
Что я сделал не так?
источник
if
оператора вuseEffect()
функции React, когда продолжал получать эту ошибку «... это не функция».Чтобы упростить правила использования точки с запятой
Каждая строка , которая начинается с
(
,[
`, или любой оператор (/, +, - единственным действительными те), должен начинаться точкой с запятой.Это предотвращает
monstrocity.
Дополнительное примечание
Чтобы упомянуть, что произойдет: скобки будут индексировать, круглые скобки будут рассматриваться как параметры функции. Обратный апостроф преобразуется в шаблон с тегами , а регулярное выражение или целые числа с явным знаком - в операторы. Конечно, вы можете просто добавить точку с запятой в конце каждой строки. Это хорошо, когда вы быстро создаете прототип и опускаете точки с запятой.
Кроме того, добавление точки с запятой в конец каждой строки не поможет вам в следующих случаях, поэтому имейте в виду такие утверждения, как
В приведенном выше случае произойдет возврат / продолжение / перерыв / ++ / -. Любой линтер поймает это с помощью мертвого кода или синтаксической ошибки ++ / - (++ / - реально никогда не произойдет).
Наконец, если вы хотите, чтобы объединение файлов работало, убедитесь, что каждый файл заканчивается точкой с запятой. Если вы используете программу-сборщик (рекомендуется), она должна делать это автоматически.
источник
Случай ошибки:
Вывод:
Исправлено: отсутствует точка с запятой (;) для разделения выражений.
источник
Для меня это было намного проще, но мне потребовалось время, чтобы понять это. В основном в нашем .jslib
Оказывается, Unity (emscripten?) Просто не нравится этот синтаксис. Мы заменили его на старый добрый цикл for, и он сразу перестал жаловаться. Я действительно ненавижу то, что в нем нет той строки, на которую он жалуется, но в любом случае, обмануть меня дважды, позор мне.
источник
(
в следующей строке. Я не вижу ничего подобного в вашем случае. Вопрос не только в названии!Я столкнулся с этой проблемой, когда создал новый класс ES2015, в котором имя свойства было равно имени метода.
например:
Обратите внимание, что эта реализация была в NodeJS 6.10.
В качестве обходного пути (если вы не хотите использовать скучное имя метода setTest) вы можете использовать префикс для своих «частных» свойств (например,
_test
).Откройте инструменты разработчика в jsfiddle .
источник
Вывод: TypeError: (промежуточное значение) (промежуточное значение) не является функцией * Как исправить это -> потому что вам не хватает полуколана (;) для разделения выражений;
почему приходит эта ошибка ?? Причина: особые правила автоматической вставки точки с запятой, которые заданы стандартами ES6.
источник
Когда я создаю корневой класс, методы которого я определил с помощью стрелочных функций. При наследовании и перезаписи исходной функции я заметил ту же проблему.
это решается путем определения метода родительского класса без стрелочных функций
источник