avertissement javascript strict : trop strict ?

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

avertissement javascript strict : trop strict ?

Message 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.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message 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.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Invité

Message 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:
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message 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).
Invité

Message 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:
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités