我最近在看一些 JavaScript 并遇到了以下例程。谁能向我解释它是如何工作的?
function groupConsecutive(numbers, successor) {
successor || ( successor = function(n) { return n + 1; });
var groups = [];
return _.each(numbers, function(number) {
if (groups.length === 0) {
groups.push([number]);
} else {
successor.call(this, _.last(_.last(groups))) === number ? _.last(groups).push(number) : groups.push([number]);
}
}, this), groups;
}
具体来说,我试图理解这successor || {
一点。如果我在这里使用“use strict”,它会引发“预期分配或函数调用,而是看到一个表达式”错误,所以我相信它应该是因为在调用函数之前从未定义过继任者。因此,对于我的思维方式,每当例程启动时,后继函数是未定义的。此例程使用 underscore.js 库。