仅在 Safari 中:引用错误找不到变量



我的许多脚本看起来是这样的:

if (...) {
const myvariable1 = document.querySelector('.class-1');
const myvariable2 = document.querySelector('.class-2');
function someFunction() {
// Do something with myvariable1 or myvariable2
}
someFunction();
}

它们在Chrome、Firefox、Edge和Opera上运行良好,但在Safari上我得到了错误:

ReferenceError: Can't find variable myvariable1

解决方案

如果我在If语句之前声明常量,代码就会工作。。。

const myvariable1 = document.querySelector('.class-1');
const myvariable2 = document.querySelector('.class-2');
if (...) {
function someFunction() {
// Do something with myvariable1 or myvariable2
}
someFunction();
}

但我不明白为什么,也不知道如何在全球范围内提供常量。

也许有人可以向我解释Safari独有的行为。

这种奇怪的行为在非严格代码MSN中的块级函数中有解释。

启用严格模式将解决此问题。

jquery中已经启用了严格模式,在Safari中对它进行处理并没有解决问题。

使用var function_name = function_name() {}有时有效,但重新加载时会返回错误。

对我来说,唯一解决的是删除";异步;从我的函数js文件的加载。

<script async src="js/header-functions.js"></script>

然后这就解决了

<script src="js/header-functions.js"></script>

对我来说,它解决了确保在页面的所有DOM元素都准备好使用后调用函数的问题。

我将脚本包装在:中

$(function () {
//do
});

相关内容

  • 没有找到相关文章

最新更新