Javascript 这是什么意思;字段1:字段2“;什么意思?

Javascript 这是什么意思;字段1:字段2“;什么意思?,javascript,reactjs,Javascript,Reactjs,以下节选自降档演示: {({ getInputProps, getItemProps, 伊索本, inputValue:inputValue2, selectedItem:selectedItem2, highlightedIndex, }) => ( 有人能解释一下“inputValue:inputValue2”是什么意思吗?当用于封闭{}时,分隔对象成员引用,其中冒号左侧的值“inputValue”是成员引用,右侧的值“inputValue2”是分配给该成员的变量或值 例如: v

以下节选自降档演示:


{({
getInputProps,
getItemProps,
伊索本,
inputValue:inputValue2,
selectedItem:selectedItem2,
highlightedIndex,
}) => (

有人能解释一下“inputValue:inputValue2”是什么意思吗?

当用于封闭{}时,分隔对象成员引用,其中冒号左侧的值“inputValue”是成员引用,右侧的值“inputValue2”是分配给该成员的变量或值

例如:

    var test = "hello"
       ,obj = {a:1,b:2,c:test};
在上面的测试中,分配了值“hello”,在对象定义中,它有3个成员,a、b和c,a分配了1,b分配了2,c分配了变量test

    alert(obj['c']);

将导致显示“hello”。

此处inputValue:inputValue2表示inputValue是JSON键,inputValue2是要分配给此JSON键的变量

 {
      getInputProps,
      getItemProps,
      isOpen,
      inputValue: inputValue2,
      selectedItem: selectedItem2,
      highlightedIndex,
    }
这个JSON可以写成

{
          getInputProps:getInputProps,
          getItemProps:getItemProps,
          isOpen:isOpen,
          inputValue: inputValue2,
          selectedItem: selectedItem2,
          highlightedIndex:highlightedIndex,
        }
如果键和分配的变量具有相同的名称,则可以忽略在右侧写入变量名称。

这是销毁的一部分(滚动到“分配给新变量名称”)

在您提供的示例中,我们不希望对变量
selectedItem
进行阴影处理,因此他们将其分配给
selectedItem2
。这样,您就可以使用从您的状态定义的
selectedItem
,以及提供给该函数的变量

下面是一个更简单的例子:

函数参数({
firstArg,
瑟达格,
fourthArg:DifferentivVariableName
}){
console.log(firstArg、thirdArg、differentVariableName)
}
武断({
第一个参数:1,
第三名:2,
福瑟格:3
});
所以代码

{
          getInputProps,
          getItemProps,
          isOpen,
          inputValue: inputValue2,
          selectedItem: selectedItem2,
          highlightedIndex,
}
是对象映射的简写语法

在es6之前,如果必须将数据从一个对象复制到另一个对象,则必须执行以下操作

var obj2;
obj2.firstProperty = firstProperty;
obj2.secondProperty = secondProperty;
(假设范围中已存在firstProperty和secondProperty) 现在是es6 您可以使用速记语法

obj2={ 第一财产, 第二财产 }

现在,当变量和对象中的属性名称相同时,这就可以工作了。 但是如果您必须将对象中“secondProperty”的属性名更改为“second”,那么您必须在对象中显式映射该属性

obj2={ 第一财产, 第二个=第二个属性 }


因此,在您的示例中,作用域中有一个属性“inputValue2”,但您希望将对象中的该属性重命名为“inputValue”这就是显式属性映射语法的原因。

不是这样,我认为它是JOSN对象。这里他/她作为参数传递。这是键值组合,但如果值是变量且与键同名,则可以忽略以写入该变量名称。请尝试此变量a=10;变量d={a,b:20};console.log(d);我明白了!谢谢!问题是在示例中没有定义InputValue2。这怎么可能?@Vincent,您可以使用console.log或alert来显示InputValue2并验证它是否已定义,或者显示成员InputValue2的内容,它将向您显示分配的内容。@Vincent,因为这个答案只是关于“常规对象”.但你问的是
var obj2;
obj2.firstProperty = firstProperty;
obj2.secondProperty = secondProperty;