JavaScript find(),传{}和不传{}有什么区别?
JavaScript find(), what is the difference of passing {} and without {}?
我有下面的例子。两个 find() 函数都有效,但我不确定第一个带有 {} 的函数是如何传递到回调函数中的。
使用 1.If {},我假设一个对象被传递到 find 函数中,但是 'title' 作为一个对象如何用于与值(1.2)进行比较。有没有大佬解释下原理,有参考就更好了。
2.I理解第二个find函数是传入object,而arr.title指的是object内部的值'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 的单个清单参数。
行为相同的函数
function f({p}) {
return p;
}
声明一个匿名的清单参数,并提取其 p 属性。
从调用者的角度来看,这两个函数的行为相同,实际上,如果传递的第一个参数未定义,两者都会抛出异常,如果 x 没有 p 属性,则两者都将 return 未定义,依此类推.
第二种形式纯粹是函数实现中使用的句法便利,可以提取名为 p 的 属性 并无限制地使用它。
参数解构是 JavaScript's general destructuring syntax 的一个实例,它还有其他应用程序,包括变量声明、赋值和提供默认值。
如果使用 { },我假设将 object 传递给查找函数...
这是一种叫做解构的Javascript魔法,一种特殊的语法。
发生了什么: object/s 的值正在通过它们的密钥解包。
结果: object 被传递的密钥解构。这会导致返回您在查找函数中看到的键的值。
为了更好地理解正在发生的事情,您可能首先必须完全理解 find 函数及其工作原理。
我了解第二个查找函数正在传入 object...
发生了什么: 您正在传递所谓的回调。你基本上是说,对于我数组中的每个条目,运行 这个函数并根据我的回调(你的函数)的评估,给我输出。
结果: 这意味着,如果 title 等于 1.2 for any/each object checked,在回调的情况下 arr => arr.title ==1.2
它将计算为真,因此返回 object。
解构赋值:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
const { title } = { title: 1.2 };
console.log(title); // 1.2
我有下面的例子。两个 find() 函数都有效,但我不确定第一个带有 {} 的函数是如何传递到回调函数中的。
使用1.If {},我假设一个对象被传递到 find 函数中,但是 'title' 作为一个对象如何用于与值(1.2)进行比较。有没有大佬解释下原理,有参考就更好了。
2.I理解第二个find函数是传入object,而arr.title指的是object内部的值'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 的单个清单参数。
行为相同的函数
function f({p}) {
return p;
}
声明一个匿名的清单参数,并提取其 p 属性。
从调用者的角度来看,这两个函数的行为相同,实际上,如果传递的第一个参数未定义,两者都会抛出异常,如果 x 没有 p 属性,则两者都将 return 未定义,依此类推.
第二种形式纯粹是函数实现中使用的句法便利,可以提取名为 p 的 属性 并无限制地使用它。
参数解构是 JavaScript's general destructuring syntax 的一个实例,它还有其他应用程序,包括变量声明、赋值和提供默认值。
如果使用 { },我假设将 object 传递给查找函数...
这是一种叫做解构的Javascript魔法,一种特殊的语法。
发生了什么: object/s 的值正在通过它们的密钥解包。
结果: object 被传递的密钥解构。这会导致返回您在查找函数中看到的键的值。
为了更好地理解正在发生的事情,您可能首先必须完全理解 find 函数及其工作原理。
我了解第二个查找函数正在传入 object...
发生了什么: 您正在传递所谓的回调。你基本上是说,对于我数组中的每个条目,运行 这个函数并根据我的回调(你的函数)的评估,给我输出。
结果: 这意味着,如果 title 等于 1.2 for any/each object checked,在回调的情况下 arr => arr.title ==1.2
它将计算为真,因此返回 object。
解构赋值:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
const { title } = { title: 1.2 };
console.log(title); // 1.2