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);}; 

为什么使用匿名函数不是滤镜阵列()方法的工作?

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

使用声明功能正常工作:

var temp = stuffs.filter(filterMethod2); 
+1

'新功能(O){...}'试图使用该功能作为构造。 – Barmar

+0

你从哪里得到那个'new'? – Bergi

回答

2

刚刚摆脱的“新”的关键字,它应该工作。

+0

更完整的答案是解释**为什么**删除'new'关键字将解决OP的问题。 – mhodges

+0

@Pointy Huh? '.filter()'将值传递给函数。 – mhodges

+1

@mhodges是的,我没有拿起OP想要做什么。 – Pointy

4

你并不需要使用new来创建一个匿名函数。 JavaScript中的new关键字用于调用函数作为对象构造函数,并且这些参数通常由构造函数用来初始化对象的属性。只要把匿名函数的参数filter()

var temp = stuffs.filter(function(o){ return (o.id>=1);}); 
+0

啊。我懂了。谢谢 – rustyengineer