Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能够在面试中解决addNum(4,5)和addNum(4)(5),但如果addNum(1)(2)…(N)呢?_Javascript_Closures - Fatal编程技术网

Javascript 我能够在面试中解决addNum(4,5)和addNum(4)(5),但如果addNum(1)(2)…(N)呢?

Javascript 我能够在面试中解决addNum(4,5)和addNum(4)(5),但如果addNum(1)(2)…(N)呢?,javascript,closures,Javascript,Closures,昨天我参加了一个关于JavaScript的采访 他们问了我一个问题, 为以下内容编写一个程序: addNum(4,5); addNum(4)(5); 我写的。详情如下: var fn18 = function(){ var addNum = function(){ var argLength = arguments.length, num = 0; if(argLength > 1){

昨天我参加了一个关于JavaScript的采访

他们问了我一个问题, 为以下内容编写一个程序:

addNum(4,5);
addNum(4)(5);
我写的。详情如下:

 var fn18 = function(){
    var addNum = function(){
        var argLength = arguments.length,
            num = 0;            
        if(argLength > 1){
            for(var x=0;x < argLength; x++){
                num += parseInt(arguments[x],10);
            }

            return num;
        }else if(argLength == 1){
            num = arguments[0];

            var fn = function (param){                  
                var n = num + param;
                return n;
            }   

            return fn;
        }else{
            return 0;
        }
    };

    print("1> addNum(2,4) => "+addNum(2,4)+"\n");   
    print("2> addNum(2)(5) => "+addNum(2)(5)+"\n");
    print("3> addNum() => "+addNum()+"\n");
};

fn18();
我厌倦了递归返回函数,但它会打印整个函数

我的方法应该是什么?

这样如何(省略第一种情况的解决方案,
addNum(4,5)
):


您可以链接任意多个,并随时调用返回函数上的
.sum
,获取当前的总和。

从技术上讲,您不能这样做;不能使用可变函数。你需要告诉我这是最后一个论点。
addNum(2)(3)(4).....(N)
function addNum(num) {
    var fun = function(num2) {
        fun.sum += num2;
        return fun;
    }
    fun.sum = num;  
    return fun;
}