And*_*lov 2 javascript spread-syntax
有人可以解释我为什么
const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()}Run Code Online (Sandbox Code Playgroud)
这很有效
和
const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()};Run Code Online (Sandbox Code Playgroud)
这不(注意末尾的分号)
这与扩展语法或分号无关.
对象解构赋值之前没有类似的var,const或者let必须使用括号(或者以某种其他方式作为包含它的较大语句中的表达式出现),因为否则JS将解析左括号作为块的开头:
const getabc = ()=>({a:'aa',b:'bb',c:123});
let a, b, c;
({ a, b, c } = {...getabc()});Run Code Online (Sandbox Code Playgroud)
同时,这里使用扩展语法没有意义,所以你可以删除它:
const getabc = ()=>({a:'aa',b:'bb',c:123});
let a, b, c;
({ a, b, c } = getabc());
Run Code Online (Sandbox Code Playgroud)
根据MDN 文档,您缺少括号:
可以通过与其声明分开的解构来为变量分配其值。
Run Code Online (Sandbox Code Playgroud)var a, b; ({a, b} = {a: 1, b: 2});
var a, b;
({a, b} = {a: 1, b: 2});
Run Code Online (Sandbox Code Playgroud)
我的猜测是,第一个是 Chrome 实现中的错误,因为 Firefox 会抛出错误。
铬合金
火狐浏览器
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |