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));
}
您在哪里定义计数?