Javascript:循环属性内部的条件递增或递减

Javascript: conditional increment or decrement inside for loop properties

本文关键字:条件 循环 属性 内部 Javascript      更新时间:2023-09-26

我知道我可以做IF ELSE,但我需要知道是否可以设置条件循环,比如:

for ( i=0; i<la; dr?(i++):(i--) ) {}

for ( if (dr) { i=0; i<length; i++ } else { i=length-1; i--} ) {}

另一种仍然紧凑(甚至更紧凑)但可读性更强、效率更高的方法是:

var str = 'hello';
for(var i=(dr?0:str.length-1), d=(dr?1:-1); str[i]; i+=d) do_something();

如果你把1或-1放在dr中,我认为这是有道理的:

for(var i=+(dr===-1&&str.length-1); str[i]; i+=dr) do_something();

是的,使用条件循环是可以的,但不建议使用,因为对于试图理解代码的新手来说,这会变得非常困难。如果使用第一种语法,则代码不可读。第二个语法可读性很强,所以我认为你应该更喜欢使用它

但是,如果你可以使用第一个版本的语法,那么就使用它。你应该始终使用最容易阅读和维护的代码。

First是可以的。(但您可能也必须在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();

(代码未测试)

  1. 第一个是好的和有效的。为此:

    for ( i=0; i<4; dr?(i++):(i--) )

    检查jsFiddle此处

  2. 第二个不好,因为for循环需要一个标识符,而得到了"if"