2013-07-16 2 views
0

Il y a deux jours, sur un site que je suis le seul auteur, j'ajouté ce code à un script:Quel est le problème avec ma logique? (Longueur de la chaîne JS)

if (PowerArray[0][0].length < 1); 
{ 
    return false; 
} 

et tout a bien fonctionné. Lorsque PowerArray [0] [0] était "70", le script s'exécutait. Lorsque PowerArray était vide, le script ne dépassait pas la ligne citée ci-dessus. Ce n'est plus vrai. Pour la vie de moi, je ne peux pas comprendre. Je l'ai testé avec des variantes du code, comme ci-dessous:

if (PowerArray[0][0].length < 1); 
{ 
    alert(PowerArray[0][0].length); 
    return false; 
} 

et mis PowerArray [0] [0] = "70". Quand je cours le code, j'obtiens une alerte avec "2" dans le texte. C'est le seul endroit où j'ai une alerte dans le script. Que se passe-t-il ici et comment le réparer?

Remarque: Le comportement attendu est, bien sûr, pas d'alerte, car "70" a une longueur de 2, et ne devrait pas déclencher la vérité de l'if.

Editer: 1) Oui, le False dans le premier bloc était une faute de frappe. Cela a été corrigé. 2) Le comportement attendu était d'arrêter le traitement si (et seulement si) PowerArray [0] [0] .length était 0. 3) J'avais précédemment initialisé PowerArray comme un tableau vide, puis ai copié un tableau (qui avait le potentiel d'être vide) en elle.

+11

Vous avez des points-virgules à la fin de vos déclarations 'if' qui pourraient causer des problèmes. –

+2

Je n'ai pas vérifié, mais je suis assez certain que «Faux» ne devrait pas fonctionner du tout. Faute de frappe? –

+0

Avez-vous vérifié votre console d'erreur? – tjameson

Répondre

4

Vous devriez Enlevez le point-virgule de l'instruction if, il termine votre instruction là. Et oui, quand votre PowerArray est vide, PowerArray [0] [0] va lancer une erreur indéfinie, Donc devrait mettre une vérification nulle pour cela aussi.

+0

c'est une erreur logique, mais pas la raison pour laquelle les scripts suivants ne fonctionnent pas quand 'PowerArray' est vide –

+0

@ArunPJohny mais c'est pourquoi le demandeur observe 70 dans son tableau. En revanche, vous mettez votre réponse à plus tard, car c'est le prochain problème rencontré par l'OP. –

0

essayer cette

if (PowerArray[0]) { 
      if (PowerArray[0][0].length < 1) { 
       return False; 
      } 
     } 
+0

à part le point-virgule supplémentaire que vous n'avez pas corrigé ... si la valeur est fausse, sa longueur (si elle en a) serait nulle. –

+0

thnks pour les pointeurs – iJade

3

quand PowerArray est vide PowerArray[0] donne undefined alors vous obtiendrez une erreur pour PowerArray[0][0] dire TypeError: Cannot read property '0' of undefined c'est la raison pour laquelle le script est ni courir après cette ligne

if (PowerArray && PowerArray[0] && PowerArray[0][0] && PowerArray[0][0].length < 1) 
{ 
    return false; 
} 
+0

Il y a toujours une erreur de syntaxe, car False n'est pas un mot clé Javascript valide. À moins que je ne manque quelque chose ... Et vous avez raté le point-virgule ... – tjameson

+0

@tjameson l'a manqué totalement –

0

Je pense que le point-virgule après le si est le problème. Je voudrais également vérifier si PowerArray est une implémentation de tableau 2D valide. Vérifiez ce lien pour les idées How can I create a two dimensional array in JavaScript?

Commencez par changer à ce if (PowerArray[0][0].length < 1)

Questions connexes