全局变量不更新外部函数

时间:2018-12-06 07:30:27

标签: javascript

到目前为止,试图使在函数内部创建的变量可以全局访问

console.log(proper_head);

在每次执行该功能时都需要更新时,始终显示“ 1”,这是我的功能:

var i = 0;
function change_head() {
    if (i < head_class.length) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i = 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }
}
var proper_head = change_head();

它是通过按一个按钮执行的(不确定它是否重要)。 我想出的唯一解决方案是

 setTimeout()

我确定有更好的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用像这样的递归实现:

var i = 0;
function change_head() {
    if (i < head_class.length) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i = 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }
change_head();
}

问题是您的函数仅被调用一次,您可以从自身内部调用该函数,但是以上示例将永远不会停止,并且可能会在浏览器中达到最大调用堆栈大小,然后崩溃,我会建议将其包装在某种if语句中,以使其在某个点停止,例如i> 50。

编辑:

我知道您的实际问题是什么,您的if块都没有触发,在第一次按下后,head_class.length === 1,所以“ if(i

if (i < 3) {
        head.classList.add(head_class[i].name);
        i++;
        var h = i;
        return h;
    } else if (i == 3) {
        head.className = "";
        i -= 3;
        var h = i;
        return h;
    }

i = 3用于分配,i == 3用于比较。

希望这会有所帮助

劳埃德