ben*_*e89 6 javascript ecmascript-6
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
let {
text, value
} = f;
}
Run Code Online (Sandbox Code Playgroud)
这样做会创建两个新变量(来自else),但是如果我这样写它:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
{
text, value
} = f;
}
Run Code Online (Sandbox Code Playgroud)
我收到语法错误.这里最好的方法是什么?
你需要在任务周围做一些事情:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
({ // ( at start
text, value
} = f); // ) at end
}
Run Code Online (Sandbox Code Playgroud)
(巴贝尔的现场拷贝.)
你需要那些parens,原因与你需要parens或类似的东西相同,以便立即调用一个函数:告诉解析器它应该期望一个表达式,而不是一个语句.没有parens,遇到它时{,它认为这是块的开始.但是,与使用功能,它必须是括号,而不是一个领先的一元+,!等这样的:
let text, value;
if (typeof f == 'string') {
text = value = f;
} else {
+{ // <== Doesn't work like it does with IIFEs
text, value
} = f;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |