思路:闭包。

var sayIt = function(greeting, name, punctuation) 
{     
    return greeting + ', ' + name + (punctuation || '!') 
}
function partial(fn, str1, str2) 
{
    return function(argument)
    {
        return fn(str1,str2,argument)
    }
}
let res=partial(sayIt, 'Hello', 'Ellie')('!!!')
console.log(res)

总结:一般涉及到一个函数的连环调用,则可以使用闭包,即函数的返回值是一个函数,具体的内外函数参数需要具体情况具体判断!