簡體   English   中英

僅在 Safari 中:ReferenceError 找不到變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM