ES6解构,动态分配

时间:2015-06-14 17:40:08

标签: javascript ecmascript-6

else

这样做会创建两个新变量(来自let text, value; if (typeof f == 'string') { text = value = f; } else { { text, value } = f; } ),但是如果我这样写的话:

{{1}}

我收到语法错误。这里最好的方法是什么?

1 个答案:

答案 0 :(得分:7)

你需要围绕任务进行调整:

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;
}