Javascript 为什么在运行时Js会变得混乱

Javascript 为什么在运行时Js会变得混乱,javascript,buildingblocks,Javascript,Buildingblocks,我在为HTML元素执行一个函数,在CSS类之间切换,使用一个clases对象,该对象有两个属性,活动和非活动,以及一个全局变量计数来跟踪运行时间。我意识到一些奇怪的行为: 这里一切正常,在控制台输出中我得到了切换效果 函数toogleClases(){ 如果(计数%2==0){ 返回类。活动; } 否则{ 返回类别。非活动; } } for(设i=0;i

我在为
HTML
元素执行一个函数,在
CSS
类之间切换,使用一个clases对象,该对象有两个属性,活动和非活动,以及一个全局变量计数来跟踪运行时间。我意识到一些奇怪的行为:

这里一切正常,在控制台输出中我得到了切换效果

函数toogleClases(){
如果(计数%2==0){
返回类。活动;
}
否则{
返回类别。非活动;
}
}
for(设i=0;i<10;i++){
log(toogleclass());
计数++;
}
但是如果我将
count++
插入toogle函数本身(我认为更实用)

函数toogleClases(){
如果(计数%2==0){
返回类。活动;
}
否则{
返回类别。非活动;
}
计数++;
}
for(设i=0;i<10;i++){
log(toogleclass());
}

我总是在控制台上得到相同的值“10次:活动”,我很想知道为什么会发生这种情况,我怀疑这是一个奇怪的Js部分您的函数在更新count变量之前返回输出。return语句之后的任何内容都不会触发,因此您的
count
值始终为
0
。在返回输出之前,需要更新
count++

var计数=0;
函数toogleClases(){
让状态=假;
如果(计数%2==0){
状态=真;
} 
计数++;
返回状态“活动”:“非活动”;
//用clases.active替换“active”,用clases.non_active替换“non active”
}
for(设i=0;i<10;i++){
log(toogleclass());

}
因为您在
Toogleclass()返回后调用
count++
count++
将永远无法到达。请尝试以下方法:

function toogleClases() {
    if(count%2==0){
        count++;
        return clases.active;
    }
    else{
        count++;
        return clases.non_active;
    }

}

for(let i = 0 ; i < 10 ; i++){
    console.log(toogleClases());
}
函数toogleClases(){
如果(计数%2==0){
计数++;
返回类。活动;
}
否则{
计数++;
返回类别。非活动;
}
}
for(设i=0;i<10;i++){
log(toogleclass());
}

您不需要计数器,可以将i作为参数传递:

 function toogleClases(count) {
    if(count%2==0){
        return clases.active;
    }
    else{
        return clases.non_active;
    }

}

for(let i = 0 ; i < 10 ; i++){
    console.log(toogleClases(i));
}
函数toogleClases(计数){
如果(计数%2==0){
返回类。活动;
}
否则{
返回类别。非活动;
}
}
for(设i=0;i<10;i++){
控制台日志(Toogleclass(i));
}

您在哪里定义计数?