TypeError: DOM.addEventListener (& hellip;) не является функцией error [duplicate]

Добавление двух моих битов. Мне нужно было ожидание для тестирования. Я не хотел разрывать код, так как это было бы большой работой, поэтому для меня это было просто.

for (var i=0;i<1000000;i++){                    
     //waiting
  }

Я не вижу недостатков в этом, и это помогло мне.

38
задан Elgs Qian Chen 23 June 2015 в 20:52
поделиться

4 ответа

Решение

Просто поместите точку с запятой (;) после console.log( ... ).


Пояснение

Ошибка легко воспроизводится следующим образом:

console.log()
(function(){})

Он пытается передать function(){} в качестве аргумента в возвращаемое значение из console.log(), который сам по себе не является функцией, а фактически undefined (проверьте typeof console.log();). Это объясняется тем, что JavaScript интерпретирует это как console.log()(function(){}). console.log однако является функцией.

Если у вас не было объекта console, вы увидите

ReferenceError: console не определено

Если у вас есть объект console, но не метод log, вы увидите

TypeError: console.log не функция

Однако у вас есть

TypeError: console.log (...) не является функцией

Обратите внимание на (...) после имени функции. С этими словами это относится к возвращаемому значению функции.


Уважать ;

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

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.

92
ответ дан Xufox 23 August 2018 в 23:58
поделиться

Существует еще один способ встретить эту ошибку. console.log не является неизменным, и можно случайно перезаписать значение.

console.log = 'hi';

В этом случае просто перезагрузите страницу, чтобы отменить повреждение.

0
ответ дан Craig Pemberton 23 August 2018 в 23:58
поделиться

Ошибка означает, что возвращаемое значение 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
4
ответ дан Felix Kling 23 August 2018 в 23:58
поделиться

Одной из возможных причин может быть объявление var console где-то в вашем скрипте.

Использовать:

window.console.log(...);

. Работал для меня.

Надеюсь, это поможет

1
ответ дан Learner 23 August 2018 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: