Javascript,函数后的语法

时间:2015-04-15 00:33:34

标签: javascript

我有一个为我改变对象的功能,我想知道它是如何工作的,如果有人可以解释它或指向正确的方向,我将不胜感激。这是功能:

$scope.filteredObject = Object.keys($scope.filterObject).reduce(function(p, collection) {
    var values = $scope.filterObject[collection];
    p[collection] = Object.keys(values).filter(function(key) {
        return values[key] === true;
    }).map(function(key) {
        return key;
    });
    return p;
}, {});

所以这很好用,但我想知道函数末尾的}, {});究竟是什么。我不完全确定它的名称,并在javascript 中的函数之后google“ }, {}”似乎混淆了google(lol)的地狱。谢谢!

2 个答案:

答案 0 :(得分:3)

  • } - anoymous函数表达式function(p, collection) { … }
  • 的结尾
  • , - 多个参数之间的分隔符
  • {} - (空)object literal,第二个参数
  • ) - 函数调用结束,将参数列表的括号括起来.reduce(…)

答案 1 :(得分:1)

它是一个空对象,与函数无关。 看看Array.prototype.reduce()

reduce函数有第二个可选参数。

arr.reduce(callback[, initialValue])

所以在你的情况下,它是这样的:

callback = function(p, collection) { /*...*/ };
initialValue = {}; // could also be new Object()

希望这会有所帮助:)