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.logno entanto, é uma função.
Se você não tivesse o consoleobjeto, você veria
ReferenceError: console não está definido
Se você tivesse o consoleobjeto, mas não o logmé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á nulle o acessador de propriedade em nullcausará um TypeError: string.match(...) is null - o valor de retorno é null. No caso console.log(...)do valor de retorno foi undefined.