在下面的 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/