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