解构赋值以在 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 如何知道在哪个对象中查找 min
和 max
以及如果另一个对象 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
时,它会从中取出 min
和 max
值。如果提供的对象不包含这些值,则它将用 undefined
.
替换缺失值
为了回答您的问题,JS 将仅在传递给您的 half
函数的对象中查找 min
和 max
。因此,定义在 half
范围之外的其他对象将不会被触及。
在课程中,我使用解构:
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 如何知道在哪个对象中查找 min
和 max
以及如果另一个对象 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
时,它会从中取出 min
和 max
值。如果提供的对象不包含这些值,则它将用 undefined
.
为了回答您的问题,JS 将仅在传递给您的 half
函数的对象中查找 min
和 max
。因此,定义在 half
范围之外的其他对象将不会被触及。