This question already has answers here:
object destructuring without var
(3个答案)
5年前关闭。
这样做会创建两个新的var(来自
我收到语法错误。最好的方法是什么?
(Live copy on Babel。)
出于相同的原因,您需要这些parens you need parens or similar to immediately invoke a function:告诉解析器它应该使用表达式,而不是语句。没有parens,当它遇到
(3个答案)
5年前关闭。
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
let {
text, value
} = f;
}
这样做会创建两个新的var(来自
else
),但是如果我这样写的话:let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
{
text, value
} = f;
}
我收到语法错误。最好的方法是什么?
最佳答案
您需要在作业周围加上括号:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
({ // ( at start
text, value
} = f); // ) at end
}
(Live copy on Babel。)
出于相同的原因,您需要这些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;
}
10-02 08:48