Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкания в js (https://javascript.ru/forum/misc/40443-zamykaniya-v-js.html)

shkarbatov 05.08.2013 22:31

Замыкания в js
 
Добрый день. Разбираюсь в замыканиях, вот хочу написать функцию, которая при каждом вызове складывает переданные данные. То есть в итоге должно получиться: 14, параметров может быть не 4, а более.
Для 2 чисел работает, а для 3 и более - не получается.
Подскажите в чем промах?

function func(number) {
	var result = number;

	var res = function(num) {
		return result = result + num;
	};
	return res;
}

var result = func(2)(3)(4)(5);
console.log(result); // 14

nerv_ 05.08.2013 23:54

var foo = (function() {
    var sum = 0;
    
    function bar() {
        sum += arguments[ 0 ] || 0;
        return bar;
    }
    
    bar.toString = bar.valueOf = function() {
        return sum;
    };
    
    return bar;
}());

alert( foo( 1 )( 2 )( 3 )( 4 )( 5 ) );

shkarbatov 05.08.2013 23:56

Спасибо большое!


Часовой пояс GMT +3, время: 02:09.