Solución
Simplemente ponga un punto y coma ( ;) después de console.log(… ).
Explicación
El error se puede reproducir fácilmente así:
console.log()
(function(){})
Está tratando de pasar function(){}como un argumento al valor de retorno del console.log()cual en sí mismo no es una función sino en realidad undefined(verifique typeof console.log();). Esto se debe a que JavaScript lo interpreta como console.log()(function(){}). console.logsin embargo es una función.
Si no tuvieras el consoleobjeto, verías
ReferenceError: la consola no está definida
Si tuvieras el consoleobjeto pero no el logmétodo, verías
TypeError: console.log no es una función
Lo que tienes, sin embargo, es
TypeError: console.log (...) no es una función
Tenga en cuenta el (...)después del nombre de la función. Con esos se refiere al valor de retorno de la función.
El salto de línea no separa estas dos expresiones como declaraciones separadas debido a las reglas de JavaScript para la inserción automática de punto y coma (ASI) .
Respeta el ;
Todos estos fragmentos de código dan como resultado todo tipo de errores inesperados si no hay ningún punto y coma:
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
Otro ejemplo
A (...)menudo se ven con el uso de métodos encadenados o accesos de propiedad encadenados:
string.match(/someRegEx/)[0]
Si no se encuentra esa expresión regular, el método volverá nully el descriptor de acceso de propiedad en nullprovocará un TypeError: string.match(...) is null - el valor de retorno es null. En el caso de console.log(...)la valor de retorno era undefined.