带大括号的Javascript const,其中两个变量之间用冒号分隔

时间:2019-01-22 15:19:29

标签: javascript react-native

我正在做一个本机反应项目,我在互联网上找到了解决我问题的方法,但我不理解函数的哪一行

componentDidUpdate(propsOld) { // line 1
    const { fill } = this.props;  // line 2
    const { fill:fillOld } = propsOld; // line 3

    if (fill !== fillOld) { // line 4
      Animated.timing(this.anim, { toValue:fill, duration:2000 // line 5 }).start();
    }
}

我不理解的行是第3行:

const { fill:fillOld } = propsOld;

我理解当单个变量或多个变量用逗号',',

分开时花括号的使用

有人用冒号':'分隔时,请给我解释一下的意思吗?

2 个答案:

答案 0 :(得分:2)

使用:而不是,是它创建了填充别名。因此现在可以将fill称为fillOld。所以如果我想把条例草案称为弗雷德,我会做 {bill:fred}

答案 1 :(得分:1)

基本上是在销毁对象时重命名变量。

如果您有这样的对象:

const obj = {
    prop1: 'prop1',
    prop2: 'prop2',
    prop3: 'prop3',
}

,并且您想获取变量prop2,可以这样做:

const { prop2 } = obj;

但是如果您已经定义了具有相同名称的内容怎么办?像这样的块,其中您已经定义了prop4,并且想在解构时获取该变量?

const prop4 = 'something';
const obj = {
    prop1: 'prop1',
    prop2: 'prop2',
    prop3: 'prop3',
    prop4: 'else'
}

您不能执行以下操作:const { prop4 } = obj;因为prop4已经存在并且它也是const

所以基本上您可以像这样重命名它:

const { prop4: prop4duplicated } = obj;

基本上,在您的代码上:

const { fill } = this.props;
const { fill:fillOld } = propsOld;

它正在生成两个变量fillfillOld,这是因为fill已经存在,然后将其重命名为fillOld