【发布时间】:2013-11-25 22:14:16
【问题描述】:
我有一个生成一些随机数字的函数,在该函数中我调用了 setInterval() 因为我需要这些数字每 2 秒刷新一次。
function genSine(val1, val2) {
var freq = 0.1; // angular frequency
var coords = function(x, y) {
var amplitude = Math.floor((Math.random()*10)+1);
var phase = Math.floor((Math.random()*20)+1);
return {
x : Math.sin(freq * (val1 + phase) * amplitude) + Math.floor((Math.random()*100)+1),
y : Math.sin(freq * (val2 + phase) * amplitude) + Math.floor((Math.random()*100)+1)
};
}
setInterval(function() {
current = coords(50, 50);
console.log('Val 1: ' + current.x);
console.log('Val 2: ' + current.y);
}, 2000);
}
genSine(10, 20);
这一切都很好,值按预期更新,但我的目标是在 setInterval() 函数中更新两个全局变量(我们称之为 val1/val2)。看来我有一个范围问题,因为这些变量在函数内无法访问,我无法从该函数外部访问“当前”变量。我知道我在这里遗漏了一些东西,它是什么?
【问题讨论】:
-
在函数外声明
var current = {}; -
这是一个 jsfiddle jsfiddle.net/4uNen/2
标签: javascript jquery