Javascript自调函数
问题描述:
嗨,大家好,你能解释一下这两种实现之间的区别吗?Javascript自调函数
var vettoreC: Array<number> = [];
vettoreC = vettoreA;
this.moda = (function mode(vettoreC) {
return vettoreC.sort((a, b) =>
vettoreC.filter(v => v === a).length - vettoreC.filter(v => v === b).length
).pop();
})();
和
var vettoreC: Array<number> = [];
vettoreC = vettoreA;
this.moda = this.calcolaModa (vettoreC);
其中calcolaModa是
calcolaModa(vettore: Array<number>) {
return vettore.sort((a, b) =>
vettore.filter(v => v === a).length - vettore.filter(v => v === b).length
).pop();
}
在第一种情况下,我有这样的错误:
ERROR TypeError: Cannot read property 'sort' of undefined
at mode (statistiche.component.ts:145)
at statisticheComponent.webpackJsonp.128.statisticheComponent.calcolaStatistiche (statistiche.component.ts:148)
at SafeSubscriber._next (statistiche.component.ts:72)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
at SafeSubscriber.next (Subscriber.js:185)
at Subscriber._next (Subscriber.js:125)
at Subscriber.next (Subscriber.js:89)
at MapSubscriber._next (map.js:83)
at MapSubscriber.Subscriber.next (Subscriber.js:89)
at CatchSubscriber.Subscriber._next (Subscriber.js:125)
第二正常工作。
我能做些什么来使第一次执行有效?
答
有了第一个例子,你需要传递参数在最后括号:
this.moda = (function mode(vettoreC) {
return vettoreC.sort((a, b) =>
vettoreC.filter(v => v === a).length - vettoreC.filter(v => v === b).length
).pop();
})(vettoreC);
通知,其中vettoreC
再次提到的最后一行。
谢谢。有用。 –
@MarcoNatale没问题,乐意帮忙! –