NodeJS 函数参数中变量两边的大括号是什么意思[duplicate]

iqxoj9l9  于 2023-02-12  发布在  Node.js
关注(0)|答案(3)|浏览(321)
    • 此问题在此处已有答案**:

Where can I get info on the object parameter syntax for JavaScript functions?(1个答案)
12个月前关闭。
我在一个包裹上看到这个代码:

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

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

ryevplcw

ryevplcw1#

这是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
nnt7mjpx

nnt7mjpx2#

这个问题可能是一个转帖:What do {curly braces} around javascript variable name mean
但是答案是destructuring assignment,如果传入的对象镜像了引用的变量,那么可以在赋值时检索该特定字段。

xxls0lw8

xxls0lw83#

这是Destructuring Assignment
在下面的示例中,大括号"{}"中的变量"name""sex""age"分别从"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);

相关问题