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

发布于 2022-05-25 12:36:21 字数 1452 浏览 1182 评论 0

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 来避免这样的错误。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

虐人心

有一天你能到我的心里去,你会看到那里全是你给的伤悲。

0 文章
0 评论
24514 人气
更多

推荐作者

yili302

文章 0 评论 0

晚霞

文章 0 评论 0

LLFFCC

文章 0 评论 0

陌路黄昏

文章 0 评论 0

xiaohuihui

文章 0 评论 0

你与昨日

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文