为什么prevColor总是undefined

此代码应记录新的颜色(actualColor)和以前的颜色(prevColor)。但是我不能从prevColor函数内部保存到setInterval中。错误在哪里?我认为这不是上下文问题。但是我不确定。里面没有this ...

您能告诉我如何从actualColor函数内部将prevColor的值保存在setInterval中吗?

var actualColor;
var prevColor;


// do some user action and change actualColor


setInterval(function () {
    // only log the color if it differs from prevColor
    if (actualColor != prevColor) {
        console.log("actualColor: " + actualColor + ", prevColor: " + prevColor);
    }
    prevColor = actualColor;
}, 100);


安慰:

actualColor: acff06, prevColor: undefined

最佳答案

我认为这必须是您的上下文-我用上面的所有内容制作了一个简单的网页,并且工作正常-甚至没有在变量上设置初始值:

javascript - setInterval函数不能使用外部变量-LMLPHP

我将您的代码放在HEAD的脚本标签中,并添加了

<input
    type="text"
    id="actualColor"
    />
<input
    type="button"
    onclick = "actualColor = document.getElementById('actualColor').value;"
    value = "change colour" />


提供一种更改网页中的actualColor的方法(而不是使用控制台)

10-05 21:01