SOURCE

function reduce(arr, callback, val) {
    if(!Array.isArray(arr) || !arr.length || typeof callback !== 'function') {
        return []
    }
    let rect = []
    let value = val ? val : arr[0]
    let i = value ? 1 : 0

    for (;i<arr.length;i++) {
        value = callback(arr[i], i, arr, value)
    }
    return value
}

function fn(curr, index, arr, value) {
    return curr + value
}

var arr = [...Array(5).keys()]

console.log(reduce(arr,fn, 10))
console 命令行工具 X clear

                    
>
console