gpt4 book ai didi

JavaScript find(),传递{}和不带{}有什么区别?

转载 作者:行者123 更新时间:2023-12-01 15:38:14 26 4
gpt4 key购买 nike

我有以下示例。两个 find() 函数都有效,但我不确定第一个带有 {} 的函数是如何传递给回调函数的。
1.如果使用{},我假设将一个对象传递给find函数,但是'title'作为一个对象如何用于与values进行比较(1.2)。有人可以解释一下基础知识,引用会更好。
2.我知道第二个find函数是传入对象,而arr.title是指对象'array1'中的值。我是对的?

const array1 = [{name:1,title:1.1}, {name:2,title:1.2}];

const found = array1.find(({title}) => title ==1.2);
const found2 = array1.find(arr => arr.title ==1.2);

console.log(found);
console.log(found2);
上面代码的结果是:
> Object { name: 2, title: 1.2 }
> Object { name: 2, title: 1.2 }

最佳答案

这与 Array.prototype.find 无关而是 JavaScript 函数参数语法的一般特征。
可以使用对象或数组解构语法定义函数参数。
函数定义

 function f(x) {
return x.p;
}

声明一个函数,该函数接受一个名为 x 的 list 参数。
行为相同的功能
 function f({p}) {
return p;
}
声明一个匿名的 list 参数,并提取其 p 属性。
从调用者的 Angular 来看,这两个函数的行为是相同的,如果传递的第一个参数是未定义的,两个函数都将抛出,如果 x 没有 p 属性,则两者都将返回 undefined,依此类推。
第二种形式纯粹是在函数实现中使用的一种语法便利,用于提取名为 p 的属性并在没有限制的情况下使用它。
参数解构是 JavaScript's general destructuring syntax 的一个实例,它还有其他应用程序,包括变量声明、赋值和提供默认值。

关于JavaScript find(),传递{}和不带{}有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63422858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com