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

标签 javascript for-loop declaration let comma-operator

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

不幸的是,代码导致类型错误:f不是函数,因为f = () => i被解释为let f = ( ) => 我:

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

for 循环中,如何将 f = () => i 与前面的 let i = 'a' 分开?

将其放在括号中会导致语法错误:

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

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

最佳答案

我找到了解决方案:

{
    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();
}

关于javascript - for 循环中带有声明的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263736/

相关文章:

javascript - 如何使用 javascript_include_tag 获取绝对路径?

javascript - 从 Javascript 函数中提取变量 (Phonegap)

javascript - Angular 2模板无法识别模板引用变量

javascript - 从数组头部取出 n 个元素

python - Python 中的循环问题

java - 循环线程组 - 请帮我调试

c++ - 图实现的邻接矩阵中的数组 vector 错误

javascript - 将 token 存储到 JS 本地存储安全吗?

c++ - "int a;"是 C 和 C++ 中的声明还是定义?

c - 我不明白以下指针变量声明在 c 中的含义