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

相關問題