javascript - 以编程方式设置for循环的第三条语句

标签 javascript

想知道是否有机会以编程方式设置 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 的作用域是 block 并且不可用。

当然,您可以通过将其作为参数传递来共享可变对象,例如:

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/

相关文章:

javascript - div 容器拉伸(stretch)超过 100% 高度

javascript - jQuery post 不返回任何响应数据

javascript - 您可以检查 $(this).addClass ('selected' ) 是否已添加到 jquery 中

javascript - Firebase错误: Timestamp out of range

javascript - 如何在 javascript 中将样式属性重置为其 CSS 默认值?

javascript - JSONarray 没有数组名称?

javascript - Cordova iOS 在单个页面上将屏幕方向更改为横向

javascript - 当您忘记 `await` Javascript 中的异步函数时如何发出警告?

javascript - 重新加载多个数据表的内容

javascript - 如何检查json中的值是node js中的字符串还是数组