Работа замыкания
Здравствуйте, подскажите пожалуйста как решить такую задачу?
function add(x) { var part = function(y) { part.sum += y; return part; }; part.sum = x; part.valueOf = function() { return part.sum; }; return part; } var x = add(1)(2)(3)(4); console.log(+x); // 10 var three = add(1)(2); console.log(+three); //3 var six = three(3); console.log(+six); //6 console.log(+three); //6 как сделать так, чтобы console.log(+three) на последнем шаге было 3? |
Moloch,
А почему должно быть 3, если six и three ссылаются на одну и туже функцию и вызов одной из них, изменяет свойство sum обеих? Объект переменных надо новый создавать. <script> function add(x) { var part = function (y) { part.sum += y; return part; }; part.sum = x; part.valueOf = function () { return part.sum; }; return part; } var three = add(1)(2); var six = add(+three)(3) alert(+three); </script> |
благодарю за ответ!
|
Часовой пояс GMT +3, время: 08:25. |