将指针/引用作为参数传递给变量

2023-12-06

我知道这个问题已经被问过多次(是的,我做了一些研究),但我找不到适合我需求的解决方案。

到目前为止我所做的:

我正在构建一个函数,用于跟踪用户向下滚动页面的百分比并将其很好地显示在某个进度条中。这工作得很好,但是当我在 Chrome 上打开开发者控制台并查看“时间轴”选项卡(这以漂亮的图形显示正在运行的内容)时,我意识到我的代码非常“活跃”。它运行用户向下滚动页面的每个像素,说实话,这是相当多的。

所以我想,如何才能改进这一点,我想出了一个解决方案,即每 {whatever} 毫秒只执行一次函数。如果函数已在 {whatever} 毫秒内执行,则这涉及将变量设置为 true 或 false。

我想完成什么:

我希望能够设置对外部变量的引用,该变量将充当标志来确定函数是否已经执行。

function qeue(fn, interval, status){ // this function name might not be very fitting..
    // fn = function to be executed
    // interval = function can only run once between the intervals

    // status = tricky part.. 
    // This should contain a reference to an external variable that is either true or false 
}

如何才能做到这一点?

边注

如果这个解释没有帮助,并且您仍然没有得到我想要的:

如何将对变量的引用传递给函数,以便该函数可以根据该变量的值进行操作?

为什么普通参数不是一个选项我想在函数内实现某种递归 setTimeout 功能,检查另一个函数是否已执行,如果我将其传递给参数,则该参数在此过程中不能更改。

希望你们能帮帮我!

谢谢

感谢您的精彩回答。你让我学到了很多。我将采用去抖策略!我标记了 T.J.克劳德是最好的答案,因为这是一个很好的解释,也是第一个解释。但再次感谢大家!


你所描述的想要做的事情并没有立即对我说“使用对变量的引用”(正如 Teemu 指出的那样,听起来你想要去抖),但是回答你关于变量引用的问题......

JavaScript 没有任何形式的变量引用(除了通过闭包,这可能会出现问题)。但是您只需使用一个对象并使用它的属性就可以轻松地完成您正在谈论的事情。属性就是“变量”。

简单的例子:

function foo(obj) {
  var counter = 0;
  var timer = setInterval(function() {
    console.log("foo: " + obj.property);
    if (++counter === 5) {
      clearInterval(timer);
    }
  }, 500);
}

var o = {property: "unchanged"};
// Give the "reference" to `property` to `foo`:
foo(o);

// Update it periodically while `foo` is doing its asynchronous thing
setTimeout(function() {
  o.property = "update 1";
}, 1000);
setTimeout(function() {
  o.property = "update 2";
}, 1700);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将指针/引用作为参数传递给变量 的相关文章