在打字稿组件文件中,正在导入underscore.js库,如下所示:
import * as _ from 'underscore';
稍后在组件中,教师使用以下行从照片对象数组中删除照片对象:
this.photos.splice(_.findIndex(this.photos, { id: id }), 1)
我相信这一行与以下代码的作用相同:
var i = _.findIndex(this.photos, (photo) => {
photo.id == id;
});
this.photos.splice(i, 1);
我不明白的是
(photo) => { photo.id == id; }
减少到
{ id: id }
答案 0 :(得分:2)
它没有。
以下是一个带有一个参数(photo
)的函数,它将此参数的id
属性与闭包上下文的id
变量进行比较,并且不返回任何内容:
(photo) => { photo.id == id; }
但是你可能意味着这个:
(photo) => photo.id == id
哪个不一样!这相当于:
(photo) => { return photo.id == id; }
只是语法糖。它是一个函数,它接受一个参数(photo
)并返回该参数的==
属性id
的比较结果和闭包上下文的id
变量
接下来,这只是一个具有属性id
的对象:
{ id: id }
使其表现相似的魔力完全取决于underscore
。它根本不是javascript的一部分。
here这两个选项是分开的。所以基本上是两个"重载",它们以不同的方式实现,但行为方式相同。