gpt4 book ai didi

javascript - 程序化解构

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:57 25 4
gpt4 key购买 nike

我有一个不同的用例,在使用解构概念时,我希望新变量的名称来自不同的变量。

对于 ex(通常的解构):

var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
console.log(foo, bar); // Works fine

工作正常,但是当我尝试用其他变量替换 p, foo, q, bar 时,我得到了错误,因为我无法获得正确的语法。

我最接近的是:

var o = {p: 42, q: true};
var x1 = "p";
var x2 = "foo";
var x3 = "q";
var x4 = "bar";
var {[x1]: foo, [x3]: bar} = o;
console.log(foo, bar);

其他我试过但没用的东西是:

var {[x1]: window[x2], [x3]: bar} = o; //Uncaught SyntaxError: Unexpected token [
var {[x1]: (()=>x2)(), q: bar} = o; //Uncaught SyntaxError: Unexpected token (

但在这里我仍然无法将foo, bar 替换为x2, x4

知道如何实现这一目标吗?或者甚至可以这样做吗?

最佳答案

您需要分配一个左值,但据我所知,您不能声明动态生成的变量名,如 let [dynamicName] = value。但是,对象属性是另一种选择,它可以动态生成:

var o = {p: 42, q: true};
var container = {};
var x1 = "p";
var x2 = "foo";
var x3 = "q";
var x4 = "bar";
({[x1]: container[x2], [x3]: container[x4]} = o);
console.log(container.foo, container.bar);

在全局范围内,您可以滥用全局对象被用作对象环境的事实,并使用 window[x2]window[x4],但是它在生产代码中并不是很有用。

关于javascript - 程序化解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com