![](/img/trans.png)
[英]ReferenceError: Can't find variable: ValidatorEnable in Safari
[英]Only in Safari: ReferenceError Can't find variable
我的許多腳本看起來像這樣:
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-only-behavior。
這種奇怪的行為在非嚴格代碼中的塊級函數 - 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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.