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))