TypeError: console.log(…) 不是 JS 中的函数
TypeError: console.log(…) is not a function in JS
“console.log(…) is not a function”错误的发生有多种原因:
console.log
忘记在调用和 IIFE之间放置分号。console
定义一个在代码中命名的变量。
以下是错误发生的两种最常见方式。
索引.js
console.log('Test') // 👈️ forgot semicolon // ⛔️ TypeError: console.log is not a function (function() {}) const console = 'hello'; // 👈️ defined console variable // ⛔️ TypeError: console.log is not a function console.log('Test');
在第一个示例中,我们忘记在对
console.log
方法的调用和
立即调用的函数表达式之间放置一个分号。
结果是我们基本上调用了console.log
方法的返回值,即undefined
.
索引.js
console.log('Test')()
要解决“console.log is not a function”错误,请确保在console.log
调用和立即调用的函数表达式之间放置一个分号,并且不要定义console
代码中命名的任何变量。
索引.js
console.log('Test'); // 👈️ forgot semicolon // ✅ Works (function() {})
错误的第二个原因是定义了一个console
在代码中命名的变量。
如果由于某种原因你必须这样做,如果你在浏览器中,你可以访问对象console.log
上的本地方法,或者
如果你在 Node.js中,则可以访问对象上的本地方法。window
global
索引.js
// ✅ Works in browser window.console.log('Test'); // ✅ Works in Node.js global.console.log('Test');
如果您在浏览器中,则该console
对象是在对象上定义的;如果您在 Node.js 中,则该对象是在对象上定义的。window
global
window
请注意,定义一个隐藏本机对象的变量是一种不好的做法,但是有时第 3 方包会这样做,并且除了或变量之外,您没有其他方法来访问本机对象。 global
简而言之,“不是函数”错误意味着您尝试调用的值不是函数。
发生此错误的最常见原因是:
- 定义一个具有相同名称的变量来隐藏原始对象。
- 在不同类型的值上调用
Array.map
方法,例如在对象上调用方法。 - 方法拼写错误 – 所有方法名称在 JavaScript 中都区分大小写。
- 在调用任何方法后放置第二组括号,例如
console.log('test')()
.
结论
要解决“console.log is not a function”错误,请确保在console.log
调用和立即调用的函数表达式之间放置一个分号,并且不要定义console
代码中命名的任何变量。