【问题标题】:What do curly braces around a variable in a function parameter mean [duplicate]函数参数中变量周围的花括号是什么意思[重复]
【发布时间】:2022-02-12 23:41:36
【问题描述】:

我在一个包裹上看到了这段代码:

const SortableList = SortableContainer(({items}) => {
 return (
     <ul>
        {items.map((value, index) =>
            <SortableItem key={`item-${index}`} index={index} value={value} />
        )}
    </ul>
 );
});

在函数参数中用花括号括住items 会发生什么?

【问题讨论】:

标签: javascript node.js reactjs ecmascript-6 curly-braces


【解决方案1】:

这是destructuring assignment 语法。

再举一个例子,下面两行代码是相等的:

const { items } = args

const items = args.items

简单地说,它是一种访问给定变量的特定字段以便在该范围内进一步使用的简化方法。

在您的原始示例中,它声明了一个变量 items 用于函数体,即第一个参数的 items 字段。

const SortableList = SortableContainer(({items}) => {
    // do stuff with items here

等于

const SortableList = SortableContainer((input) => {
    const items = input.items
    // do stuff with items here

【讨论】:

    【解决方案2】:

    这个问题很可能是转帖:What do {curly braces} around javascript variable name mean

    但作为答案,它是destructuring assignment。如果传入的对象反映了被引用的变量,则可以在赋值期间检索该特定字段。

    【讨论】:

      【解决方案3】:

      这是Destructuring Assignment

      在下面的示例中,花括号“{ }""data" 中提取值 "John""Male""24"强>分别:

      *花括号“{}”中的变量名必须与“data”中的键名相同

      const data = { name: "John", sex: "Male", age: 24 };
      
      const { name, sex, age } = data; 
      
      console.log(name); // John
      console.log(sex);  // Male
      console.log(age);  // 24

      如果花括号“{}”中的变量名与“data”中的键名不同,则“undefined” 已分配:

      const data = { name: "John", sex: "Male", age: 24 };
      
      const { myName, mySex, age } = data; 
      
      console.log(myName); // undefined
      console.log(mySex);  // undefined
      console.log(age);    // 24

      花括号“{}”中的变量顺序无关紧要:

      const data = { name: "John", sex: "Male", age: 24 };
      
      const { age, sex, name } = data; 
      
      console.log(name); // John
      console.log(sex);  // Male
      console.log(age);  // 24

      您可以重命名花括号“{}”中的变量:

      const data = { name: "John", sex: "Male", age: 24 };
      
      const { name: firstName, sex: gender, age } = data; 
      
      console.log(firstName); // John
      console.log(gender);    // Male
      console.log(age);       // 24

      重命名花括号“{}”中的变量后,原来的变量不起作用并报错:

      const data = { name: "John", sex: "Male", age: 24 };
      
      const { name: firstName, sex: gender, age } = data; 
      
      console.log(name);
      console.log(sex);
      console.log(age);

      【讨论】:

        猜你喜欢
        • 2014-10-01
        • 2012-11-16
        • 2018-04-27
        • 1970-01-01
        • 2017-05-10
        相关资源
        最近更新 更多