for循环中带有声明的逗号运算符

时间:2019-03-20 14:52:38

标签: javascript for-loop declaration comma let

在以下JavaScript代码块中,我不想在b范围内声明新函数 bl println bl exit ,而只是将f分配给先前声明的for ,从而为() => i范围的声明和定义的变量let f创建了一个闭包。

不幸的是,由于for被解释为i,因此代码导致Type Error: f is not a function

f = () => i

let f = () => i循环中,如何将{ let f; for (let i = 'a', f = () => i; i == 'a'; ) { i = 'b'; } f(); } 与先例for分开?

将其放在括号中会导致f = () => i

let i = 'a'

我不想更改范围。我只是在寻找一种语法手段来表达我的问题中给出的确切范围星座。

1 个答案:

答案 0 :(得分:1)

我找到了解决方法:

{
    let f;
    for (let i = (f = () => i, 'a'); i == 'a'; ) {
        i = 'b';
    }
    f();
}

或带有附加的虚拟助手:

{
    let f;
    for (let i = 'a', dummy = (f = () => i, 'ignore'); i == 'a'; ) {
        i = 'b';
    }
    f();
}