【发布时间】:2021-10-25 23:56:19
【问题描述】:
我在 WordPress 网站上的 JQuery 代码中收到以下错误。
Uncaught SyntaxError: Identifier '$' has already been declared
背景
在 WordPress 中,有时$ 标识符未定义为 jQuery。因此,您必须手动将 $ 设置为 jQuery,这样您就可以在代码中使用 $ 作为简写。
我在脚本顶部添加了简单的代码var $ = jQuery;,最初解决了这个问题。但是,最近我收到了上面显示的has already been declared 错误。基于一些谷歌搜索,我尝试了很多东西,并想出了以下代码来尝试解决这个问题。但我仍然得到同样的错误。 try...catch 根本没有帮助,if typeof... 也没有帮助
try {
if (typeof $ !== 'undefined') {
console.log("$ is already defined");
} else {
console.log("$ is not defined");
var $ = jQuery;
}
}
catch(err) {
console.log("Error caught: " + err.message);
}
免责声明
我知道这个问题的原因。一些先前的脚本已经在全局 window 上下文中声明了变量 $。很可能是一个插件正在这样做。但是,我不能保证它总是被正确声明,所以我不能只删除我的声明。另外,由于这是语法错误,我猜我的try...catch 和我的if typeof... 基本上没用。
我需要什么
我正在寻找一种方法来检查$ 是否已声明,然后仅在尚未声明时声明它。
我知道,这是一种糟糕的编码风格,但不幸的是,这是 WordPress,我无法控制整个代码库。另一个插件可能已经或可能没有声明它,这就是我所处的情况。如果有人知道,我会很高兴回答!
【问题讨论】:
-
美元通常被其他 JavaScript 库使用。如果您必须使用它(而不是其他别名,或者只是
jQuery),请将您的代码包装在jQuery(function($){}中。这会将别名仅应用于该函数包装器的范围。