0

给定

var stuffs = [
    { id : 1, name : "orange"},
    { id : 2, name : "apple"}, 
    { id : 0, name:"grapes"}
];
var filterMethod1 = new function(o){return (o.id>=1);}; // this gives undefined error for o
function filterMethod2(o) {return (o.id>=1);};

为什么使用匿名函数不适用于数组 filter() 方法?

var temp = stuffs.filter(new function(o){ return (o.id>=1);}); // o is undefined if used this way

使用声明的函数工作正常:

var temp = stuffs.filter(filterMethod2);
4

2 回答 2

4

您不需要使用new来创建匿名函数。Javascript中的new关键字用于调用函数作为对象的构造函数,参数通常被构造函数用来初始化对象的属性。只需将匿名函数放在 . 的参数中即可filter()

var temp = stuffs.filter(function(o){ return (o.id>=1);});
于 2017-06-19T19:19:11.127 回答
2

只需摆脱“新”关键字,它应该可以工作。

于 2017-06-19T19:18:41.310 回答