2013-03-01 4 views
0

Je suis en train de créer un nouveau dossier avec un numéro ascendant sur la fin si un dossier existe déjà, mais je finis dans une boucle infinieincrémental en boucle devient infinie

var i=1; 
while (myFolder.exists == true) { 
var myFolder = new Folder(wf+"/"+curFile+"_folder"+i) 
i++; 
}; 

Toute aide serait appréciée .

+2

Vous êtes constamment en train de redéclarer myFolder et de créer de nouveaux dossiers (quels qu'ils soient). – j08691

+0

où est la condition if pour terminer la boucle? – vikasing

+1

Où est déclarée la variable 'myFolder' avant la première itération de la boucle while. Le corps de la boucle while ne sera jamais exécuté car 'myFolder' est null, et une erreur sera levée. –

Répondre

1

Il semble comme myFolder.exists est une méthode, pas une propriété, donc vous devez appeler:

while (myFolder.exists()) { 
    var myFolder = new Folder(wf + "/" + curFile + "_folder" + i); 
    i++; 
}; 

Sinon, vous évaluerez la méthode elle-même, qui est en effet toujours true dans un booléen le contexte. Notez en passant que redéfinir myFolder à l'intérieur de la boucle n'est probablement pas le problème ici. Les boucles en Javascript partagent la même portée que le code englobant, et la variable sera hissée au début de cette portée. Comme le dit jdwire, il peut être initialement undefined, mais vous recevrez alors une erreur au lieu de déclencher une boucle infinie.