想知道是否有机会以编程方式设置 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/