Просто поместите точку с запятой (;
) после 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
.
NULL
не ключевое слово. Это - идентификатор, определенный в некоторых стандартных заголовках. Можно включать
#include <cstddef>
Для имения его в объеме, включая некоторые другие основы, как std::size_t
.
NULL
не ключевое слово; это - макроподстановка для 0 и прибывает в stddef.h
или cstddef
, я верю. Вы не имеете #included
соответствующий заголовочный файл, таким образом, g ++ видит NULL
как регулярное имя переменной, и Вы не объявили его.