您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

在 JavaScript 中调试 TypeError: X is not a function 错误

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ

这 TypeError: X is not a function 错误是 JavaScript 初学者混淆的常见原因。 当您尝试调用不是函数的值时,JavaScript 会抛出此错误。 例如:

const x = 42;

x(); // Throws 'TypeError: x is not a function'

大多数现代 JavaScript 运行时都擅长格式化此错误,因此您知道 。 您尝试调用的不是函数的表达式 例如,另一个常见原因:此错误是在对象上调用不存在的方法。

const moment = require('moment');

const date = moment('2020-06-01');

// Typo! Throws 'TypeError: date.formt is not a function'
date.formt('YYYY-MM-DD');

如果 JavaScript 在您编写的代码中抛出此错误,您应该仔细检查错误堆栈跟踪中行号处的代码。 奇怪的是,您要么拼写错误,要么需要添加检查以确保您调用的值是一个函数。

// Ensure that `x` is a function to avoid TypeError.
if (typeof x !== 'function') {
  return;
}

x();

关于分号的注释

如果您不使用分号,您可能会遇到一些令人惊讶的此错误实例。 例如,下面的代码抛出 TypeError: arr[0] is not a function

const arr = []

const val = arr[0]
(function() { console.log(val) })()

因为结尾没有分号 arr[0],JavaScript 将上述代码视为等同于:

const arr = []

const val = arr[0](function() { console.log(val) })()

如果你写的 JavaScript 没有分号,一定要使用 linter 来避免这样的错误。

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐