Solução
Basta colocar um ponto e vírgula ( ;
) após console.log(
… )
.
Explicação
O erro é facilmente reproduzível desta forma:
console.log()
(function(){})
Ele está tentando passar function(){}
como um argumento para o valor de retorno do console.log()
qual ele mesmo não é uma função, mas na verdade undefined
(verifique typeof console.log();
). Isso ocorre porque JavaScript interpreta isso como console.log()(function(){})
. console.log
no entanto, é uma função.
Se você não tivesse o console
objeto, você veria
ReferenceError: console não está definido
Se você tivesse o console
objeto, mas não o log
método, veria
TypeError: console.log não é uma função
O que você tem, no entanto, é
TypeError: console.log (...) não é uma função
Observe o (...)
depois do nome da função. Com aqueles, está se referindo ao valor de retorno da função.
A quebra de linha não separa essas duas expressões como instruções separadas por causa das regras do JavaScript para inserção automática de ponto e vírgula (ASI) .
Respeite o ;
Todos esses snippets de código resultam em todos os tipos de erros inesperados se nenhum ponto-e-vírgula estiver presente:
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
let a, b;
const array = Array.from({ length: 2 })
// Now, let’s use destructuring:
[a, b] = array; // ReferenceError: can't access lexical declaration 'array' before initialization
let a, b;
const array = Array.from({ length: 2 }).fill(1),
array2 = Array.from({ length: 2 })
// Now, let’s use destructuring. Attempt to get the two 1’s from `array` as `a` and `b`:
[a, b] = array;
console.log(a, b); // undefined undefined
Outro exemplo
(...)
Muitas vezes você vê com o uso de métodos encadeados ou acessadores de propriedade encadeados:
string.match(/someRegEx/)[0]
Se esse RegEx não for encontrado, o método retornará null
e o acessador de propriedade em null
causará um TypeError: string.match(...) is null
- o valor de retorno é null
. No caso console.log(...)
do valor de retorno foi undefined
.