[JavaScript] Test d'existance d'une variable ?

Test d'existance d'une variable ? [JavaScript] - HTML/CSS - Programmation

Marsh Posté le 07-01-2006 à 14:37:42    

Salut les mecs et les moimoiselles !
 
Bon, voilà, je bosse sur du code qui est commun à plusieurs applications.
On a un fichier de paramétrage qui positionne des variables js. Ce fichier est visible et modifiable par le client.
Là, je dois rajouter une fonctionnalité qui nécéssite l'ajout d'une variable. Mais je veux rajouter la variable que dans un seul projet. Les autres projets ne doivent pas avoir besoin de la variable...
 
Le but est donc de tester l'existance de la variable et si elle existe, de s'en servir...
 
J'ai essayé de faire un test genre
if (toto == undefined) {
}
mais ça pète quand même...
 
J'ai la solution du try catch mais bon, si y'a une solution plus élégante, je suis preneur...
 
Merci :)

Reply

Marsh Posté le 07-01-2006 à 14:37:42   

Reply

Marsh Posté le 07-01-2006 à 14:49:42    

je suis pas sur que sa marche en javascript mais bon :
 
if (toto == "" ) {  
}  
 
si la variable est vide alor elle existe pas non ?!

Reply

Marsh Posté le 07-01-2006 à 15:06:05    

Ben non, quand IE (ou autre) tombe sur toto et qu'il essaie d'interpréter la variable, il répond qu'elle n'existe pas et te balance une grosse exception à travers la tronche. Il essaie même pas d'évaluer le reste de la ligne...


Message édité par Fraisouille le 07-01-2006 à 15:06:41
Reply

Marsh Posté le 07-01-2006 à 15:56:05    

Bon ben tant pis, je fais avec un catch... Mon code marche comme ça. C'est pas top joli mais tant pis :D
 
Si jamais quelqu'un trouve une solution clean, merci de le marquer ici :)

Reply

Marsh Posté le 07-01-2006 à 17:03:58    

bah :
tu met un var toto = null; au debut de ton script.
et pis tu fe un  
if(toto)
{
 
}
apres ca depend c koi ta variable.
Si par exemple c une variable ki recupere la valeur d'un champ de formulaire :  
si l'utilisateur de rentre rien ds le champ, toto est tjrs "null" et sinon bah ta variable n'est pas vide et dc la condition est remplie


Message édité par colonel_freeze le 07-01-2006 à 17:14:11
Reply

Marsh Posté le 07-01-2006 à 17:37:48    

avec typeof ??

Reply

Marsh Posté le 07-01-2006 à 19:10:35    

Ben en fait, j'ai un fichier de paramétrage propre à une application 1 qui contient
allDocsReadOnly=true
Mais dans l'application 2, le même fichier de paramétrage ne doit pas voir apparaitre cette variable.
 
Donc quand je veux l'utiliser, c'est du code qui est commun aux deux applications... Et je cherche à savoir si la variable existe ou pas. Pour un attribut d'objet, il suffit de comparer à undefined mais là, la comparaison if (allDocsReadOnly == undefined) part en exception...
 
Pour typeOf, j'ai pas essayé, pourquoi pas. Faut que je regarde les specs pour voir ce quelle fait...

Reply

Marsh Posté le 07-01-2006 à 19:13:22    

Bon, je viens de regarder ce que typeOf fait et il comporte les mêmes limitations que ma comparaison à undefined...
 
Je crois que je vais devoir garder le try / catch.

Reply

Marsh Posté le 07-01-2006 à 19:54:07    

et bah tu fai ce ke je t ai dit :
ds ton fichier de parametre de l application 2 tu met un var allDocsReadOnly = null; Je ne vois pas pk tu veux pas la voir apparaitre pour l'aplication 2 elle ne gene pas a priori si?
 
et hop un chtit test  
if(allDocsReadOnly) {
}
Ds le cas de null la condition n'est pas rempli pour true elle l'est.

Reply

Marsh Posté le 07-01-2006 à 20:23:14    

Je veux pas le mettre parce que le client, qui a accès à ces fichiers de conf, ne doit pas savoir que la fonctionnalité existe... Donc dans l'application 1, il doit y avoir allDocsReadOnly à true ou à false et dans application 2, rien du tout, même pas allDocsReadOnly=null... :/

Reply

Marsh Posté le 07-01-2006 à 20:23:14   

Reply

Marsh Posté le 07-01-2006 à 22:16:05    

Pour savoir si une variable existe en JS il suffit de la tester comme un booléen [:spamafote]
 

Code :
  1. if(myvar) {
  2.    // existe
  3. } else {
  4.    // n'existe pas ou est false
  5. }


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 07-01-2006 à 23:11:36    

non parce que si ta var n'est pas defini kelke par avt ca renvoie une erreur

Reply

Marsh Posté le 07-01-2006 à 23:15:03    

masklinn a écrit :

Pour savoir si une variable existe en JS il suffit de la tester comme un booléen [:spamafote]
 

Code :
  1. if(myvar) {
  2.    // existe
  3. } else {
  4.    // n'existe pas ou est false
  5. }



 
Nan, ça marche pas, ça part en exception...
Je suis pas sûr qu'il y ait une autre solution que le try catch...
 
Puis bon, ça sera pas la première fois qu'on fait du code bourrin et plutôt crado :D


Message édité par Fraisouille le 07-01-2006 à 23:16:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed