else
这样做会创建两个新变量(来自let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
{
text, value
} = f;
}
),但是如果我这样写的话:
{{1}}
我收到语法错误。这里最好的方法是什么?
答案 0 :(得分:7)
你需要围绕任务进行调整:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
({ // ( at start
text, value
} = f); // ) at end
}
出于同样的原因,你需要那些parens you need parens or similar to immediately invoke a function:告诉解析器它应该期望一个表达式,而不是一个语句。没有parens,当它遇到{
时,它认为这是一个块的开始。但与功能不同,它必须是parens,而不是领先的一元+
,!
等。like this:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
+{ // <== Doesn't work like it does with IIFEs
text, value
} = f;
}