的數組,我已經找到了解決辦法這裏由OhJeez:How to get an array of unique values from an array containing duplicates in JavaScript?JS返回由獨特的陣列
array.filter(function() {
var seen = {};
return function(element, index, array) {
return !(element in seen) && (seen[element] = 1);
};
}());
我想問的是如何使代碼的意義之上。我不明白的部分是,var如何保持它的關鍵。每次迭代都不會重置爲空的散列/對象嗎?
編輯:我想我理解閉包是如何工作的,這並不能解決我的問題。就我的理解,Array.prototype.filter將數組的每個元素都循環到回調函數中,在這種情況下,匿名函數'var seen = {};返回函數(元素,索引,數組){return!(元素見)& &(看過[元素] = 1);} ;.這反過來又返回裏面的功能。
我的問題再一次是不應該每個迭代運行'var seen = {}'這一行?那麼如何看待它的元素呢?
可能重複[JavaScript關閉如何工作?](https://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – Andreas
[什麼是(函數(){})( )構造在JavaScript?](https://stackoverflow.com/questions/8228281/what-is-the-function-construct-in-javascript) – Andreas