作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想做的是在两个处理程序之间发送数据。
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/
问了这个问题How to reach CSS zen? ,我现在明白我遇到的问题大多与定位有关。我发现一些文章说 CSS 作为布局系统并不总是足够好。 http://echochamber.me/vi
我是一名优秀的程序员,十分优秀!