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

问题描述 投票:0回答:1

在下面的JavaScript代码块中,我不想在f-scope中声明一个新函数for,而只是将() => i赋值给先前声明的let f,从而为for-scoped声明和定义的变量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'分开?

将它放在括号中会产生Syntax Error

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

我不想改变范围。我只是在寻找一个句法均值来表达我的问题中给出的确切范围星座。

javascript for-loop declaration comma let
1个回答
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();
}
© www.soinside.com 2019 - 2024. All rights reserved.