解构赋值以在 Javascript 行为中将对象作为函数参数传递

Destructuring Assignment to Pass an Object as a Function's Parameters in Javascript behaviour

在课程中,我使用解构:

const stats = {
  max: 56.78,
  standard_deviation: 4.34,
  median: 34.54,
  mode: 23.87,
  min: -0.75,
  average: 35.85
};

const half = ({min, max}) => (max + min) / 2.0; 

我首先认为正确的语法是(也有效):

const half = ({min, max} = stats) => (max + min) / 2.0; 

我的问题是 JS 如何知道在哪个对象中查找 minmax 以及如果另一个对象 stats2 具有属性 min 会发生什么还有max?我不明白代码在那种情况下的行为。

当你调用方法时half你是这样写的,

half(stats);

所以,JS 知道你为 half 方法传递的对象。因此,如果你这样声明 half 方法,js 将在传递的对象中查找 min、max 键,

const half = ({min, max}) => (max + min) / 2.0; 

对于另一个对象 stats2,您将再次按以下方式调用 half 方法,

half(stats2);

假设你有 2 个参数用于 half 方法,例如,

const half = ({min, max}, {foo,bar}) => (max + min) / 2.0; 

现在,如果您同时使用 stats 和 stats2 对象调用 half 方法,

half(stats, stats2);

它将首先从 stats 中获取最小值和最大值,然后尝试从 stats2 中找到 foo and bar

half 是箭头函数。现在,要使用您定义的 half,您需要传递一个像 half(myObject) 这样的对象。当 half 收到此 myObject 时,它会从中取出 minmax 值。如果提供的对象不包含这些值,则它将用 undefined.

替换缺失值

为了回答您的问题,JS 将仅在传递给您的 half 函数的对象中查找 minmax。因此,定义在 half 范围之外的其他对象将不会被触及。