Ed X: ?? sind arrays rekursiv uebergebar ??

Beitrag lesen

Hallöle;

"'a' is undefined"

so richtig klar ist mir das auch nicht, vor allem warum er sich auf
"a" bezieht, welches der _Wert_ des ersten arrayelements ist.
Aber das deine Funktion so nicht funktioniert ist eigentlich klar.

var Id, timeout=200;

function test(start,arr){
  if(start==(arr.length-1)){
    window.clearTimeout(Id);
    alert('fertig');}
  else{
    alert("test("+start+","+arr+")");

vor allem hier wird alert gebeten den Rückgabewert von test()
auszugeben. Welcher ist das eigentlich?

start++;
    Id = window.setTimeout("test("+start+","+arr+")",timeout);}}

hier wir die funktion dan nochmal, wieder rekursiv aufgegeben
es stellt sich für mich die Frage, was willst du eigentlich auf dem
Bildschirm sehen?

function testit(){
    var arr = new Array('a','b','c','d');
    test(0,arr);}


Arrays kann man sehr wohl auch in rekursiven funtionen übergeben:
In abwandlung deines konstrukts:
-------------------------------
function test(arr) {
 if(arr.length==1) {
  alert('fertig');
 } else {
  alert(arr);
  test( arr.slice(1,arr.length) );
 }
}

function testit() {
 var arr = new Array('a','b','c','d','e','f');
 test(arr);
}
--------------------------------

ps: ausserdem wuerde mich mal interessieren, warum setTimeout
    nicht in iterativen schleifen funktioniert. zb. bei einer
    for-schleife macht sich der timeout nur gesamten bemerkbar.

nun, wie willst du denn setTimeout auf eine For-schleife anwenden, es
geht eigentlich nur für funktionen. Für iterative Kontrollmechanismen
ist in JS keine "Bremse" vorgesehen.

bye eddie