在以下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'
我不想更改范围。我只是在寻找一种语法手段来表达我的问题中给出的确切范围星座。
答案 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();
}