【问题标题】:Only in Safari: ReferenceError Can't find variable仅在 Safari 中:ReferenceError 找不到变量
【发布时间】:2021-05-31 10:15:55
【问题描述】:

我的许多脚本如下所示:

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。

【问题讨论】:

    标签: javascript safari scope mobile-safari


    【解决方案1】:

    Block-level functions in non-strict code - MSN 中解释了这种奇怪的行为。

    启用strict mode 将解决此问题。

    【讨论】:

    • 解决方法:而不是 function someFunction() {}var someFunction = function() {}。这适用于我的情况。
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2014-02-20
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多