Цитата:
|
Цитата:
function foo() { var i = 0; foo = function() { return ['Hello', 'World'][i++]; } return foo(); } alert([foo(), foo()].join(' ')); |
Цитата:
|
Цитата:
|
Вот решение который мне отправил melky:
myFunc = function(){ myFunc = function(){ return "wtf"; } return "hello"; } alert(myFunc()); alert(myFunc()); По моему очень просто, не каждый новичёк, глядя на этот код поймёт, почему он вообще так работает) |
Цитата:
Я к примеру тоже решил этот пример как советует Стоян Стефанов в своей книге «JavaScript шаблоны» var myFunc = function () { myFunc = function () { return "wtf"; }; return "hello"; }; |
Можно и не переопределять функцию:
function myFunc() { return ["wtf", "hello"][myFunc.i ^= 1]; } alert([myFunc(), myFunc()]) |
Цитата:
function foo() { var i = 0; foo = function() { return ['a', 'b', 'c', 'd'][i++]; } return foo(); } alert([ foo(), foo(), foo(), foo() ]); Цитата:
|
Тогда можно даже так:
var data = [22,33,44,88,99]; function test(){ alert(data[0]); data.shift(); } test(); test(); test(); test(); Вообще без зацикливания |
Лично я бы сделал примерно так:
function foo(){ if( !foo.values ) foo.values = []; if( arguments.length === 0 ) return foo.values.shift(); foo.values.push.apply( foo.values, arguments ); return foo; }; foo( "Hello", "wtf" ); alert( [ foo(), foo() ].join( " " ) );Динамики хоть отбавляй:D |
Часовой пояс GMT +3, время: 15:36. |