繁体   English   中英

Javascript 覆盖解构的 let 变量

[英]Javascript overwrite destructured let variable

问题

是否可以覆盖用let分配的多个变量

const somefunction = (data) => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data})

let {a, b, c, d} = somefunction(3)

现在,在使用不同的参数调用 someFunction 之后,如何在一个语句中覆盖 {a, b, c, d} ?

可能的解决方案

不工作! (明显地)

const somefunction = (data) => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data})

let {a, b, c, d} = somefunction(3)
{a, b, c, d} = somefunction(5)

在职的

这似乎可行,但我更漂亮的会删除前导分号(+语法很疯狂)

const somefunction = (data) => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data})

let {a, b, c, d} = somefunction(3)
;({a, b, c, d} = somefunction(5))

还有其他方法吗?

您需要将 {} in () 包装在没有用于分组语句的括号的箭头 function 中:

 const somefunction = data => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data}); const {a,b,c,d} = somefunction(3) console.log(a,b,c,d)

或者使用 {} 并返回

 const somefunction = data => { return {a:1+data, b:2-data, c: 2*data, d: 3+1*data} }; const {a,b,c,d} = somefunction(3) console.log(a,b,c,d)

使用 let 覆盖:

 const somefunction = data => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data}); let {a,b,c,d} = somefunction(3); console.log(a,b,c,d); ({a,b,c,d} = somefunction(5)); console.log(a,b,c,d);

使用 var 覆盖(我不会;))

 const somefunction = data => ({a:1+data, b:2-data, c: 2*data, d: 3+1*data}); var {a,b,c,d} = somefunction(3); console.log(a,b,c,d); var {a,b,c,d} = somefunction(5); console.log(a,b,c,d);

这很难看,但您可以使用var而不是let

 const somefunction = (data) => {return {a:1+data, b:2-data, c: 2*data, d: 3+1*data}} var {a, b, c, d} = somefunction(3) console.log(a,b,c,d) var {a, b, c, d} = somefunction(4) console.log(a,b,c,d)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM