Javascript参数格式

Javascript参数格式,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,我不理解这两种功能之间的区别: function animal({ cat }){ return cat } function animal(cat){ return cat } 为什么要用一个而不是另一个?有什么好处吗?第一个函数将从使用对象时传入的对象返回属性cat。第二个将返回完整的对象cat,它是传入的对象 例如,第一个函数相当于: function animal(catObj){ return catObj.cat; } 这意味着,当你调用动物时,你会通过一个对

我不理解这两种功能之间的区别:

function animal({ cat }){
  return cat 
}

function animal(cat){
  return cat 
}

为什么要用一个而不是另一个?有什么好处吗?

第一个函数将从使用对象时传入的对象返回属性cat。第二个将返回完整的对象cat,它是传入的对象

例如,第一个函数相当于:

function animal(catObj){
  return catObj.cat; 
}
这意味着,当你调用动物时,你会通过一个对象,该对象的属性为cat

例如:

因此,如果我们看第一个函数,它将提取cat属性并返回true

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


因此,为了回答您的问题,这两种方法都用于执行不同种类的功能,因此它们在某些场景中都有各自的优势

调用这两个函数

动物{猫:9};返回9

动物9;返回undefined,因为数字9没有cat属性。js中的所有内容都是对象

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


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

您试过运行代码吗?它们不会做同样的事情…第一个是使用,另一个是返回完整的cat对象。
const myCatObj = {
  cat: true,
  dog: false,
  name: "Meow"
}

animal(myCatObj); // retruns true