以编程方式设置for

以编程方式设置for

想知道是否有机会以编程方式设置forloop的第三条语句

var conditionProgrammatically = 'i++';//or 'x--'

for (var i = 0; i < 10; conditionProgrammatically) {
  console.log(i)
}

最佳答案

您可以在其中使用任何想要的表达式,包括调用函数。您只需要注意范围。因此,例如,这可行:



var conditionProgramatically = () => i++ ;

for (var i = 0; i < 10; conditionProgramatically()) {
  console.log(i)
}





但这取决于var i在该函数共享的范围内的事实。但是,这不起作用:



var conditionProgramatically = () => i++ ;

for (let i = 0; i < 10; conditionProgramatically()) {
  console.log(i)
}





因为let的作用域是该块,因此不可用。

当然,您可以共享一个可变对象,方法是将其作为参数传递给它:



fn = (o) => o.i += 1
for (let o = {i:0}; o.i < 10; fn(o)) {
    console.log(o.i)
  }
  





这使您可以使用let,但是在眼睛上有点困难。

所有人都说,使逻辑适合一个简单的表达式而不是调用一个函数可能会更容易。但是,您仍然可以执行一些逻辑:



for (let i = 0; Math.abs(i) < 10; i = Math.random() > .65  ? i -1: i + 1) {
  console.log(i)
}

关于javascript - 以编程方式设置for循环的第三条语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51094172/

10-11 14:09