JavaScript参数格式

时间:2018-11-10 03:11:15

标签: javascript ecmascript-6 destructuring

我不明白这两个功能之间的区别:

function animal({ cat }){
  return cat 
}

function animal(cat){
  return cat 
}

为什么要一个使用另一个?有优势吗?

2 个答案:

答案 0 :(得分:0)

第一个函数将从使用destructuring assignment传入的对象中返回属性Times value 05-03-2018 09:00:00 1 05-03-2018 09:01:26 2 05-03-2018 09:02:00 0 05-03-2018 09:03:00 0 05-03-2018 09:04:28 1 05-03-2018 09:05:00 0 05-03-2018 09:06:00 0 05-03-2018 09:07:05 2 05-03-2018 09:08:00 0 05-03-2018 09:09:05 1 。第二个将返回完整的对象cat,它是传入的对象。

例如,第一个功能等效于:

cat

意味着,当您调用function animal(catObj){ return catObj.cat; } 时,您将经过一个对象,其中包含属性animal()

例如:

cat

因此,如果我们在看第一个函数,它将提取const myCatObj = { cat: true, dog: false, name: "Meow" } animal(myCatObj); // retruns true 属性并返回cat

您的第二个函数将仅返回传递给该函数的整个对象。因此,如果我们通过true,我们将在myCatObj中获得与输出相同的内容。

因此,为回答您的问题,两者均用于执行不同种类的功能,因此它们在某些情况下各有优势。

答案 1 :(得分:-1)

调用这两个函数

animal({cat:9});返回9

animal(9);返回undefined,因为数字9没有cat属性(在js中一切都是对象)

当我们想了解对象的cat属性时,我们使用第一个函数

当我们想直接调用一个对象时,我们使用第二个