使用数组的回调函数,该函数是否使用更新后的数组?

callback function using an array, does the function use the updated array?

我正在调试我的代码,我似乎无法弄清楚哪里出了问题。因此,我只是仔细检查我对 javascript.

的理解

如果我有以下情况:

var myArray = []

$(document).on('mousemove', function(e){
     if (myArray.length > 0) {
           //do something 
     } else { 
           //do other thing 
     }
}); 

如果我随后在我的代码中 myArray 中的 push/pop 项,我是否必须删除并重新添加 on mousemove 侦听器?或者 mousemove 会使用正确的引用吗?

JavaScript 中的所有对象(Arrays 都是对象)都是通过引用传递的。只要在范围内,您对 myArray 所做的任何更改都将更改单个 myArray 实例。有没有回调也没关系

如果这是您想要的结果,那么您就完成了。如果没有,您可以创建一个新数组并根据需要使用它。如果您需要 myArray 中的内容,您可以像这样创建数组的浅表副本:

var newArr = myArray.slice(0);

不,您不必删除并重新添加 mousemovelistener,您的数组在更高的范围内(在您的情况下是全局变量),因此在 mousemovelistener 和外部范围之间共享相同的引用。