Page 1 sur 1

avertissement javascript strict : trop strict ?

Publié : 29 mars 2005, 23:43
par martin
Le script suivant génère l'avertissement "function myFunction does not always return a value", dans la console javascript si elle est réglée sur les avertissements stricts.

Code : Tout sélectionner

<script type="text/javascript">
function myFunction (){
	if (true) {
		return true;
	} else {
		return false;
	};
}
</script>
En fait, si j'enlève les dernières accolades de bloc, l'avertissement n'est plus généré.

Code : Tout sélectionner

<script type="text/javascript">
function myFunction (){
	if (true) {
		return true;
	} else 
		return false;
}
</script>
Mais evidemment je ne trouve pas celà concluant, car on peut avoir besoin du bloc.

Bug de firefox ? Ou il y a une subtilité que je ne comprend pas ? La doc javascript 1.5 de Devedge me fait pencher pour le bug.

Publié : 30 mars 2005, 00:02
par Bobe
Un autre cas du même type:

Code : Tout sélectionner

<script type="text/javascript">
function myFunction (){
   if (true) {
      var foo = 1;
   } else {
      var foo = 2;
   }
}
</script>
génère également une erreur en mode strict (de mémoire 'variable foo cannot be redeclared' ou un truc de ce genre).

Je penche également pour le bug.

Publié : 30 mars 2005, 13:31
par Invité
Réponse logique : c'est quoi ça ? :
<script type="text/javascript">
function myFunction (){
if (true) {
return true;
} else {
return false;
}
;
}
</script>


pour le javascript il y a encore de code après ton "if..else.." car ";" donc il soupsonne à tort un return manquant ... :roll:

Publié : 30 mars 2005, 22:20
par martin
Rognududju !! Chapeau Invité...
Effectivement, en enlevant le dernier point virgule l'avertissement n'apparait plus. Merci, çà me permet de clarifier un point. La doc n'est pas trés volubile sur ce point, je trouve. Je comprenais que dans plusieurs cas ce point virgule était facultatif, mais ici il est en fait malvenu (au moins pour firefox).

Publié : 31 mars 2005, 13:52
par Invité
ce n'est pas spécifique au javascript, java, c++ et d'autre langages font de même et ça donne des "Warning" et non des "erreurs" de compilation.
De plus tu peux remercier firefox, il te prévient quand ton code est susceptible d'être incorrect ou incohérent dans sa logique :roll:
Faut pas trop lui en demander tout de même :wink: