TypeError: console.log(…) 不是 JS 中的函数

TypeError: console.log(…) 不是 JS 中的函数

TypeError: console.log(…) is not a function in JS

“console.log(…) is not a function”错误的发生有多种原因:

  • console.log忘记在调用和 IIFE之间放置分号。
  • console定义一个在代码中命名的变量。

typeerror 控制台日志不是函数

以下是错误发生的两种最常见方式。

索引.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中,则可以访问对象上的本地方法。
windowglobal

索引.js
// ✅ Works in browser window.console.log('Test'); // ✅ Works in Node.js global.console.log('Test');

如果您在浏览器中,则console对象是在对象上定义的;如果您在 Node.js 中,则该对象是在对象上定义的。windowglobal

window请注意,定义一个隐藏本机对象的变量是一种不好的做法,但是有时第 3 方包会这样做,并且除了或变量之外,您没有其他方法来访问本机对象。 global

简而言之,“不是函数”错误意味着您尝试调用的值不是函数。

发生此错误的最常见原因是:

  • 定义一个具有相同名称的变量来隐藏原始对象。
  • 在不同类型的值上调用Array.map
    方法,例如在对象上调用方法。
  • 方法拼写错误 – 所有方法名称在 JavaScript 中都区分大小写。
  • 在调用任何方法后放置第二组括号,例如
    console.log('test')().

结论

要解决“console.log is not a function”错误,请确保在console.log调用和立即调用的函数表达式之间放置一个分号,并且不要定义console代码中命名的任何变量。