gpt4 book ai didi

javascript - 如何缓存/预先计算某些东西(没有全局变量)?

转载 作者:行者123 更新时间:2023-12-05 00:54:11 24 4
gpt4 key购买 nike

我想做的是在两个处理程序之间发送数据。

element.onmousedown = function() {
data = precalculate();
}

element.onmouseup = function() {
dosomething(data);
}

如果 data 是一个全局变量,它就可以工作。人们说全局变量是邪恶的。但我不知道没有它怎么办。

还是我误解了“全局变量”?

最佳答案

如果你不想/不需要它是全局的,只需限定变量的范围:

(function() {
var data;
element.onmousedown = function() {
data = precalculate();
}

element.onmouseup = function() {
dosomething(data);
}
})();

编辑:澄清一下,在 javascript 中创建新变量作用域的唯一方法是在函数中。

任何在函数内使用 var 声明的变量对于外部作用域都是不可访问的。

在上面的代码中,我创建了一个 IIFE (立即调用的函数表达式),它只是一个创建后立即调用的函数,我把你的 data 变量(连同处理程序分配)在其中。

因为处理程序是在可以访问 data 变量的范围内创建的,所以它们保留了对该变量的访问权限。

再举个例子:

var a = "a"; // global variable

(function() {

var b = "b"; // new variable in this scope

(function() {

var c = "c"; // new variable in this scope

// in this function, you have access to 'a', 'b' and 'c'

})();

// in this function you have access to 'a' and 'b' variables, but not 'c'

})();

// globally, you have access to the 'a' variable, but not 'b' or 'c'

关于javascript - 如何缓存/预先计算某些东西(没有全局变量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335070/

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