0

请检查以下代码:

for(i=0; i-DIL; i++)//see the condition here i-DIL .Is this correct?
 { 


}

上面 for 循环中的第二个条件是否正确?如果是,那是什么意思?

实际代码是:

 javascript:R=0;  
 x1=.1; y1=.05;
 x2=.25; y2=.24;
 x3=1.6; y3=.24;
 x4=300; y4=200;
 x5=300; y5=200;
 DI=document.getElementsByTagName("img");
 DIL=DI.length; 
 function A(){for(i=0; i-DIL; i++)//see the condition here i-DIL .Is this correct?
 { 
 DIS=DI[ i ].style;
 DIS.position='absolute';
 DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+"px"; 
 DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+"px"}

R++

}
 setInterval('A()',5); void(0);

还有谁能帮我描述在脚本末尾放置 void(0) 的原因?而且你可以看到反复设置的图像位置一遍又一遍。我怎样才能克服这个问题

4

3 回答 3

4

它是否“正确”取决于您希望for循环做什么。然而,它是有效的代码,并且取决于0JavaScript 中是“假的”,而其他数字是“真”的事实。

本质上,当iDIL相等时,i - DIL等于0,出于for循环条件的目的,它被评估为false,并且它停止迭代。鉴于这DIL是集合的长度,它是一种有趣(但在技术上有效)的迭代整个集合的方法。

它相当于(虽然我会说可读性低于):

for(i=0; i < DIL; i++)
于 2013-02-11T09:16:35.370 回答
2

这意味着执行下面的代码直到i-DIL != 0。即在你的代码中它会一直工作到i到达DIL

于 2013-02-11T09:14:04.643 回答
1

for 循环通常需要:

for(variable definition; condition; increment) {}

所以,你需要一个条件。但是,由于 Javascripts 具有松散的内容类型,因此您不必使用比较来将其设为truefalse.

10 - 1          // = 9 equals true
10 - 9          // = 1 equals true
10 - 10         // = 0 equals false

"legit string"  // equals true
NULL            // equals false

但是,我确实建议进行实际比较,以避免讨厌的浏览器破坏您的条件。

for(var i = 0; i - DIL > 0; i++) {}
于 2013-02-11T09:16:22.633 回答