gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:40:21 25 4
gpt4 key购买 nike

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

到目前为止我做了什么:

我正在构建一个函数来跟踪用户向下滚动页面的百分比,并将其很好地显示在某个进度条中。这工作得很好,但是当我在 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. Crowder 是最佳答案,因为这是一个很好的解释,也是第一个。但再次感谢大家!

最佳答案

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

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);

关于javascript - 将指针/引用作为参数传递给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com