Цитата:
|
Цитата:
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, время: 14:47. |