Javascript: for 循环属性中的条件递增或递减
Javascript: conditional increment or decrement inside for loop properties
我知道我可以做一个 IF ELSE,但我需要知道是否可以设置条件循环,如下所示:
for ( i=0; i<la; dr?(i++):(i--) ) {}
或
for ( if (dr) { i=0; i<length; i++ } else { i=length-1; i--} ) {}
首先可以。 (但您可能也必须在 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();
(代码未经测试)
是的,使用条件循环很好,但不推荐这样做,因为对于试图理解您的代码的新手来说,这会变得非常困难。如果您使用第一种语法,则代码不可读。第二种语法可读性强,所以我认为您应该更喜欢使用它。
但是如果您可以使用语法的第一个版本,那么就使用它。您应该始终使用最容易阅读和维护的代码。
第一个很好用。
为此:
for ( i=0; i<4; dr?(i++):(i--) )
检查 jsFiddle here
第二个不正常,因为 for 循环需要一个标识符,而是得到 'if'.
另一种仍然紧凑(更多,甚至)但更具可读性和效率的方法是:
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();
我知道我可以做一个 IF ELSE,但我需要知道是否可以设置条件循环,如下所示:
for ( i=0; i<la; dr?(i++):(i--) ) {}
或
for ( if (dr) { i=0; i<length; i++ } else { i=length-1; i--} ) {}
首先可以。 (但您可能也必须在 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();
(代码未经测试)
是的,使用条件循环很好,但不推荐这样做,因为对于试图理解您的代码的新手来说,这会变得非常困难。如果您使用第一种语法,则代码不可读。第二种语法可读性强,所以我认为您应该更喜欢使用它。
但是如果您可以使用语法的第一个版本,那么就使用它。您应该始终使用最容易阅读和维护的代码。
第一个很好用。 为此:
for ( i=0; i<4; dr?(i++):(i--) )
检查 jsFiddle here
第二个不正常,因为 for 循环需要一个标识符,而是得到 'if'.
另一种仍然紧凑(更多,甚至)但更具可读性和效率的方法是:
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();