【问题标题】:Use let variable in different functions在不同的函数中使用 let 变量
【发布时间】:2019-05-12 08:29:09
【问题描述】:

在我的应用程序中,我需要在某个地方存储仅由一种方法使用的全局变量。我在前端使用 javascript (jquery)。

我的代码如下所示:

$(function () {
    let myVar;
    // ...
};

// and method
function foo() {
   if (!myVar) {
      // calculate myVar
   }

   // do something with myVar and update its value
}

问题是我在该方法中看不到 myVar。我也尝试过使用 localStorage 和 sessionStorage。但是当我刷新页面值时仍然设置。我需要在页面刷新后计算新值并且不使用以前的值。

在我的情况下存储变量的最佳做法是什么?谢谢你的建议。

【问题讨论】:

  • window.myVar = "value";
  • What is the best practice 在窗口全局存储肯定不是最佳实践。这真的取决于,最好的方法是使用模块加载器,您可以将全局变量存储在模块中。在您的示例中,您甚至可以通过将 foo 函数放在 jQuery 回调函数中来使用范围。

标签: javascript jquery function ecmascript-6


【解决方案1】:

您可以在窗口对象上分配一个属性。这适用于浏览器上下文

window["myVar"] = "myValue";

【讨论】:

    【解决方案2】:

    进一步@Vlandu lonuts 帖子:

    window.myVar 意味着你的变量被声明在全局范围的最顶端。这意味着您的任何 JavaScript 代码都可以访问此变量。

    【讨论】:

      【解决方案3】:

      let 关键字具有块作用域 - 在其代码块(函数、循环、条件等)之外无法访问它。您应该将其直接分配给窗口对象:

      window["myVar"] = "A value";
      

      【讨论】:

      • var 具有功能范围,因此在 OP 的示例中,如果将 let 更改为 var..
      • 哦,是的,忘记了。
      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多