SOURCE

function add(){
    let argc = Array.prototype.slice.call(arguments)
    let innerAdd = function(){
        argc.push(...arguments)
        return innerAdd
    }
    // 为了使函数返回数据设置函数的toString方法
    innerAdd.toString = function(){
        return argc.reduce(function(acculate,nVale){
                return acculate + nVale
            })
    }
    // 这里发现返回的内容是的一个函数体时 发生了隐式转换
    return innerAdd
}

// console.log( add(1)(2)(3))
console.log(typeof add(2,3,5))
console 命令行工具 X clear

                    
>
console