【问题标题】:TypeError thrown, but function still runs, why?TypeError 抛出,但函数仍然运行,为什么?
【发布时间】:2023-03-15 00:47:02
【问题描述】:

我的控制台抛出一个未捕获的 typeError,因为它还不知道 jQuery 是什么,但随后继续执行加载并加载内容,然后我收到 load complete 消息。

我有以下代码:

jQuery(function($){
    $('#content-loader').load('someFile.html', function() {
        console.log('load complete');
    });
})();

为什么会这样,我怎样才能摆脱错误并加载到 html 文件中?

截至目前,someFile.html 仅包含文本,不包含脚本。

错误屏幕截图:

尝试的解决方案

(function($){
  ...code...
})(jQuery);

摆脱错误,但不加载html文件

【问题讨论】:

  • 您确定这是导致错误的原因吗?你能发布错误消息吗?
  • 是的。它告诉我jQuery(..) is not a function 并向我显示线路
  • 如果你用 $ 替换 jquery 仍然会发生?
  • 这就是我一开始的样子,并认为使用jQuery 可能会摆脱错误
  • 它可能来自'someFile.html' 中的脚本,该脚本恰好具有相同的行号...?

标签: javascript jquery typeerror


【解决方案1】:

你基本上是在打电话给jQuery(func)();。将一个函数传递给 jquery 可能会返回一个 jquery 对象,但不是一个您可以使用最后一个 () 调用的函数。你的错误信息是:jQuery(..) is not a function,因为它是一个 jQuery 调用的返回,一个 jQuery 对象,而不是一个函数。

尝试使用:

(function($){
  ...code...
})(jQuery);

即:调用此匿名函数,该函数具有参数$,将jQuery 传递给它。 这是很多人使用的模式。

另一个快速(和奇怪)的解决方案是从包装器中删除最后一个 ()$ 参数。

【讨论】:

  • 因此,错误背后的逻辑现在更有意义了,但是,通过进行此更改,内容不会加载。让我试试你最近的建议。
  • No 没有抛出任何错误。所以我把它改成了$(function(){...}),去掉了函数调用(),这似乎有效
  • @Adjit 这是因为它和你现在的一样,但是你的函数评估之后它试图使用 jquery 调用的返回作为函数.. .
  • @Adjit 首先,作为参数传递给 jQuery() 的函数绑定到 onready 事件,然后从 jQuery() 函数返回的对象正在执行(抛出错误) ,然后当文档准备好时,回调函数的内容就会运行(记录“加载完成”)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2020-12-10
  • 2016-12-14
  • 2013-03-12
  • 2021-09-19
  • 2022-08-24
  • 2017-08-29
相关资源
最近更新 更多