JS中的一个函数,带参数传递

Lun*_*egg 4 javascript

这是工作中的测试任务.

一位农民有兔子.每只兔子都是它的重量.到时候,他杀了他们的功能cut(rabbit).你必须编写一个切割函数,使其具有外观 cut(rabbit1)(rabbit2)...(rabbitN)并推断出兔子的总质量和数量.

例如:

var rabbit1 = {weight: 5},
    rabbit2 = {weight: 4};

console.log(cut(rabbit1)(rabbit2));
Run Code Online (Sandbox Code Playgroud)

在控制台中,我们将看到"9公斤兔子或2件".

JSFiddle - https://jsfiddle.net/sjao7ut8/

我怎么写函数cut()

Nin*_*olz 7

您可以使用链接,一个流畅的界面,它返回您调用的函数,直到环境需要原始值.

function cut(rabbit) {
    var weight = 0,
        count = 0,
        fn = function (o) {
            weight += o.weight;
            count++;
            return fn;
        };

    fn.toString = function () {
        return weight + ' kg of rabbits or ' + count + ' piece' + (count > 1 ? 's' : '');
    }

    return fn(rabbit);
}

var rabbit1 = { weight: 5 },
    rabbit2 = { weight: 4 };
    
console.log(cut(rabbit1)(rabbit2));
Run Code Online (Sandbox Code Playgroud)