我知道我可以做IF ELSE,但我需要知道是否可以设置条件循环,如下所示:
for ( i=0; i<la; dr?(i++):(i--) ) {}
或
for ( if (dr) { i=0; i<length; i++ } else { i=length-1; i--} ) {}
答案 0 :(得分:3)
另一个,仍然紧凑(更多,甚至)但更可读和有效的方法是:
var str = 'hello';
for(var i=(dr?0:str.length-1), d=(dr?1:-1); str[i]; i+=d) do_something();
如果你在dr
中加1或-1,我认为这是有道理的:
for(var i=+(dr===-1&&str.length-1); str[i]; i+=dr) do_something();
答案 1 :(得分:0)
首先是好的。 (但你可能也必须在你的end_condition上使用a?b:c
)
第二是:语法错误^^
疯狂的方式:
var str = 'hello';
for(i=(dr?0:str.length-1);(dr?i<str.length:i>=0);(dr?i++:i--)) do_something();
正确的方式:
var str = 'hello';
if(dr)
for(i=0;i<str.length;i++) do_something();
else
for(i=str.length-1;i>=0;i--) do_something();
(代码未经测试)
答案 2 :(得分:0)
是的,使用条件循环是可以的,但不建议这样做,因为对于尝试理解您的代码的新用户来说,这变得非常困难。如果使用第一种语法,则代码不可读。第二种语法很可读,所以我认为你应该更喜欢使用它。
但是如果您可以使用语法的第一个版本,那么请继续使用它。您应该始终使用最容易阅读和维护的代码。
答案 3 :(得分:0)
第一个是好的和有效的。 为此:
for ( i=0; i<4; dr?(i++):(i--) )
检查jsFiddle here
第二个不合适,因为循环需要一个标识符,而是“if”。