Добавление двух моих битов. Мне нужно было ожидание для тестирования. Я не хотел разрывать код, так как это было бы большой работой, поэтому для меня это было просто.
for (var i=0;i<1000000;i++){
//waiting
}
Я не вижу недостатков в этом, и это помогло мне.
Просто поместите точку с запятой (;
) после console.log(
... )
.
Ошибка легко воспроизводится следующим образом:
console.log()
(function(){})
Он пытается передать function(){}
в качестве аргумента в возвращаемое значение из console.log()
, который сам по себе не является функцией, а фактически undefined
(проверьте typeof console.log();
). Это объясняется тем, что JavaScript интерпретирует это как console.log()(function(){})
. console.log
однако является функцией.
Если у вас не было объекта console
, вы увидите
ReferenceError: console не определено
blockquote>Если у вас есть объект
console
, но не методlog
, вы увидитеTypeError: console.log не функция
blockquote>Однако у вас есть
TypeError: console.log (...) не является функцией
blockquote>Обратите внимание на
(...)
после имени функции. С этими словами это относится к возвращаемому значению функции.
Уважать
;
Все эти фрагменты кода приводят к разным неожиданным ошибкам, если точки с запятой отсутствуют :
console.log() // As covered before () // TypeError: console.log(...) is not a function console.log() // Accessing property 0 of property 1 of the return value… [1][0] // TypeError: console.log(...) is undefined console.log() // Like undefined-3 -3 // NaN
Другой пример
Вы часто видите
(...)
с использованием цепных методов или аксессуаров с цепными свойствами:string.match(/someRegEx/)[0]
Если этот RegEx не найден, метод вернет
null
, а свойство accessor наnull
приведет кTypeError: string.match(...) is null
- возвращаемому значению будетnull
. В случаеconsole.log(...)
возвращаемое значение былоundefined
.
Существует еще один способ встретить эту ошибку. console.log
не является неизменным, и можно случайно перезаписать значение.
console.log = 'hi';
В этом случае просто перезагрузите страницу, чтобы отменить повреждение.
Ошибка означает, что возвращаемое значение console.log()
не является функцией. Вам не хватает точки с запятой:
console.log('xxx', $scope.tableIndexes[i].columnName[j]);
// ^
, которая позволяет интерпретировать следующий (...)
IIFE как вызов функции.
Сравнить сообщения об ошибках
> var foo = {bar: undefined};
> foo.bar();
Uncaught TypeError: foo.bar is not a function
и
> var foo = {bar: function(){}};
> foo.bar()();
Uncaught TypeError: foo.bar(...) is not a function
Одной из возможных причин может быть объявление var console
где-то в вашем скрипте.
Использовать:
window.console.log(...);
. Работал для меня.
Надеюсь, это поможет