我这里有这个代码:
var foo = 0;
setInterval(function(){foo++}, 1000);
这会使foo
每秒增加1。有没有办法定义一个bar
变量,它当时是foo
变量而不是变化?
这听起来令人困惑,所以这里:
例如:
var foo = 0;
setInterval(function(){foo++}, 1000);
setTimeout(function(){var bar = foo}, 4000) //bar = 4;
是否仍然将bar
保持在4而不是foo
增加?非常感谢!
(抱歉英文不好)
答案 0 :(得分:3)
如果您的意思是希望bar
与foo
在同一范围内,请移动其声明:
var foo = 0;
var bar;
setInterval(function() {
foo++;
}, 1000);
setTimeout(function() {
bar = foo;
}, 4000);
一旦它获得了计时器分配的值,它就不会再次改变(除非你在某处改变它)。
直播示例:
var foo = 0;
var bar;
setInterval(function() {
foo++;
}, 1000);
setTimeout(function() {
bar = foo;
}, 4000);
var stop = Date.now() + 10000;
var timer = setInterval(function() {
console.log("foo = " + foo + ", bar = " + bar);
if (Date.now() > stop) {
clearInterval(timer);
}
}, 1000);

.as-console-wrapper {
max-height: 100% !important;
}

答案 1 :(得分:3)
您的代码已完全符合您的描述。需要进行一些小的更改才能在初始化函数之外访问bar
,但如果等待6秒,您将在下面的示例中看到预期的结果。
var foo = 0;
var bar;
setInterval(function(){foo++}, 1000);
setTimeout(function(){bar = foo}, 4000) //bar = 4;
setTimeout(function(){
console.log(foo,bar)
}, 6000)