首页 > 解决方案 > JavaScript find(),传递{}和不带{}有什么区别?

问题描述

我有以下示例。两个 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 }

标签: javascriptreactjsfindbrackets

解决方案


这与 JavaScript 函数参数语法无关,Array.prototype.find而是一个一般特征。

可以使用对象或数组解构语法定义函数参数。

函数定义

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

声明一个函数,该函数接受一个名为 x 的清单参数。

行为相同的功能

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

声明一个匿名的清单参数,并提取其 p 属性。

从调用者的角度来看,这两个函数的行为是相同的,如果传递的第一个参数是未定义的,两个函数都将抛出,如果 x 没有 ap 属性,则两者都将返回 undefined,依此类推。

第二种形式纯粹是在函数实现中使用的一种语法便利,用于提取名为 p 的属性并在没有限制的情况下使用它。

参数解构是JavaScript 通用解构语法的一个实例,它还有其他应用,包括变量声明、赋值和提供默认值。


推荐阅读