【问题标题】:jQuery - resetting a variablejQuery - 重置变量
【发布时间】:2014-01-07 07:43:58
【问题描述】:

我在网页中有一个变量,它被设置为一个值并且是字符串类型。当一个按钮被点击时,它会调用一个函数 & 在函数的末尾,我想清理之前设置的任何东西。我试过使用:

$.removeData(myVar);

但它什么也没做。该语句之前和之后的日志语句表明它在上述语句之前和之后仍然具有值和类型。

另一个未使用的变量的值为undefined,类型为undefined。这两个变量恰好是页面中的全局变量。

如何将myVar 重置为其初始状态?我知道它应该很简单,但我错过了一些东西。将不胜感激。

【问题讨论】:

  • 不要使用全局变量,而是使用函数内部的局部变量
  • 最好显示一些代码或 jsfiddle
  • @pm.calabrese 并非所有编程问题都需要代码。他很好地描述了基本问题。
  • @Katana314 我没有说是必需的,我说会更好。并且无论如何都试图描述一些实际上是代码的东西......那么为什么不显示代码呢?

标签: jquery variables null undefined reset


【解决方案1】:

嗯...几个可能的直接答案。

myVar = undefined;
myVar = null;
delete window.myVar;

但是,我会质疑让变量是全局变量的逻辑,但只能在某些方法中使用。以下是结构可能更好的方法(使用从 ajax 累加值的随机伪示例):

addAjaxButton.onClick(function() {
  var counter = 0;
  ajax(function(addition) {
    counter += addition;
    ajax(function(moreAdd) {
      counter += moreAdd;
      alert('Total is ' + counter);
    });
  });
});

在这种情况下,不需要删除计数器 - 当所有 AJAX 完成后,它就会超出范围。

【讨论】:

    【解决方案2】:

    只需为其分配一个值。如果初始状态未定义,则将其设置为 null。你不需要对 jQuery 做任何花哨的事情来杀死价值。

    【讨论】:

      【解决方案3】:

      听起来你的函数正在做一些“副作用”的事情,你想撤消这些事情吗?

      此声明

      我想清理之前设置的所有内容。

      和这个说法不一样

      如何将 myVar 重置为其初始状态?

      您真正想要做的是将其复制到本地范围的变量中,而不是更改全局变量。此代码演示了如何使用函数参数并在本地复制全局 var。

      var someGlobal = 1;
      someMethod();
      someOtherMethod(someGlobal);
      
      function someMethod() {
        var localVar = someGlobal;
        localVar = 2;
      }
      
      function someOtherMethod(localVar) {
        localVar = 3;
      }
      
      window.console.log(someGlobal);
      

      【讨论】:

        【解决方案4】:

        这是一种重置值的方法:

        $(myVar).val('');
        

        【讨论】:

        • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
        • 抱歉,您不喜欢我回答的措辞。我对其进行了编辑,使其看起来不像是一个需要澄清的问题,而是作为建议的答案更清晰。
        猜你喜欢
        • 2023-03-04
        • 2013-06-30
        • 2019-12-29
        • 2015-01-27
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多