我有这两个递归函数。最上面的一个起作用,但是当我尝试使quantityColumn
成为第二个函数的callback
时,我得到一个错误callback is not a function
。有什么想法我做错了吗?
var sumColumn = function(lineNumber) {
return lineNumber === 0
? quantityColumn(0)
: quantityColumn(lineNumber) + sumColumn(lineNumber -1)
}
sumColumn(lineCount) // returns 9
var sumColumn = function(callback, lineNumber) {
return lineNumber === 0
? callback(0)
: callback(lineNumber) + sumColumn(callback(lineNumber -1), lineNumber -1)
}
sumColumn(quantityColumn, lineCount) // callback is not a function
如果需要更多代码。这是quantityColumn
函数的含义。还要注意,current.getSublistValue
是第三方API(NetSuite),它基本上只返回表上线/行的交点。
var columnValue = R.curry(function(getSublistValue, sublistId, column, i) {
return getSublistValue({
sublistId: sublistId,
fieldId: column,
line: i
})
}
)
var itemSublist(current.getSublistValue)('item')
var quantityColumn = itemSublist('quantity')
var lineCount = current.getLineCount('item') - 1 // first index is 0
quantityColumn(5) // 2
quantityColumn(4) // 1
quantityColumn(3) ...
var sumColumn = function(lineNumber) {
return lineNumber === 0
? quantityColumn(0)
: quantityColumn(lineNumber) + sumColumn(lineNumber -1)
}
sumColumn(lineCount) // returns 9
答案 0 :(得分:1)
var sumColumn = function(lineNumber) {
return lineNumber === 0
? quantityColumn(0)
: quantityColumn(lineNumber) + sumColumn(lineNumber -1)
}
sumColumn(lineCount) // returns 9
var sumColumn = function(callback, lineNumber) {
return lineNumber === 0
? callback(0)
: callback(lineNumber) + sumColumn(callback, lineNumber -1)
}
sumColumn(quantityColumn, lineCount) // callback is not a function
在此行callback(lineNumber) + sumColumn(callback(lineNumber -1), lineNumber -1)
中,您要调用的函数callback
(带有lineNumber-1参数)是您想要传递的函数