定义一个不可更改的变量

时间:2017-10-03 08:40:15

标签: javascript variables

我这里有这个代码:

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增加?非常感谢!
(抱歉英文不好)

2 个答案:

答案 0 :(得分:3)

如果您的意思是希望barfoo在同一范围内,请移动其声明:

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)