被JavaScript谓词语法弄糊涂了
在typescript组件文件中,将按如下方式导入下划线.js库:被JavaScript谓词语法弄糊涂了,javascript,Javascript,在typescript组件文件中,将按如下方式导入下划线.js库: import * as _ from 'underscore'; 在组件的后面部分,讲师使用以下行从照片对象数组中删除照片对象: this.photos.splice(_.findIndex(this.photos, { id: id }), 1) 我相信这行代码的作用与下面的代码相同: var i = _.findIndex(this.photos, (photo) => { photo.id == id; })
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 }
事实并非如此
以下函数使用一个参数(photo
),该参数将此参数上的id
属性与闭包上下文的id
变量进行比较,并且不返回任何内容:
(photo) => { photo.id == id; }
但是你可能是这个意思:
(photo) => photo.id == id
这是不一样的!这相当于:
(photo) => { return photo.id == id; }
还有语法糖。它是一个函数,它接受一个参数(photo
),并返回该参数的属性id
与闭包上下文的id
变量的比较结果
接下来,这只是一个具有属性id
的对象:
{ id: id }
使其行为相似的魔力完全取决于下划线
。它根本不是javascript的一部分
在源代码中,这两个选项被拆分。因此,基本上这是两个“重载”,它们实现方式不同,但行为方式相同。事实并非如此
以下函数使用一个参数(photo
),该参数将此参数上的id
属性与闭包上下文的id
变量进行比较,并且不返回任何内容:
(photo) => { photo.id == id; }
但是你可能是这个意思:
(photo) => photo.id == id
这是不一样的!这相当于:
(photo) => { return photo.id == id; }
还有语法糖。它是一个函数,它接受一个参数(photo
),并返回该参数的属性id
与闭包上下文的id
变量的比较结果
接下来,这只是一个具有属性id
的对象:
{ id: id }
使其行为相似的魔力完全取决于下划线
。它根本不是javascript的一部分
在源代码中,这两个选项被拆分。所以基本上这是两个“重载”,实现方式不同,但行为相同。这与LINQ无关。看看
.findIndex
?这与LINQ无关。看看.findIndex
?啊,当然!非常感谢。我没有想到这只是一个超载。你是对的,这就是我的意思。我还在习惯胖箭头的语法。啊,当然!非常感谢。我没有想到这只是一个超载。你是对的,这就是我的意思。我仍然习惯于胖箭头语法。