2010-12-07 5 views
2

Je reçois un message d'erreur absurde dans IE8, dites-moi que la constante '2' est nulle ou non un objet. La ligne de code est:IE8 Javascript: '2' est nul ou pas un objet

if (! localtree[idx][2]) { 

J'ai aussi essayé le coder comme ceci:

if (localtree[idx][2] == 0) { 

La valeur du tableau à cet endroit est toujours égale à zéro (pour l'instant). Comment IE8 peut-il penser que le nombre 2 est nul?

Je suis mystifié!

L'erreur exacte est:

Message: '2' is null or not an object 

Quelqu'un at-il vu?

EDIT: Il s'agit d'un message d'erreur très trompeur. Voir ma réponse ci-dessous pour ce qui s'est vraiment mal passé.

+0

Comment initialisez-vous localtree? –

+1

Quelle erreur Firefox donne-t-il à cela? –

Répondre

5

Ceci est un message d'erreur très confus. Il s'est avéré que je marchais un élément au-delà de la fin du tableau. 'idx' faisait référence à une valeur inexistante que j'essayais de traiter comme une référence de tableau (avec [2]). Plutôt que de me dire que '2' était nul, j'aurais dû dire que 'localtree [idx]' était nul.

La cause première de ceci était que j'avais une virgule de fin où j'ai défini le tableau, menant à une valeur nulle supplémentaire dans le tableau. Dans firefox, les virgules sont ignorées (comme dans perl), mais dans IE, elles sont significatives.

+0

Ah, le problème classique des virgules. Et non, 'localtree [idx]' n'est pas 'null', parce que' localtree [idx] [0] 'et' ... [1] 'existent (les objets eux-mêmes * évaluent toujours' true'), mais '... [2] 'est. Cela dit, je suis d'accord que le message d'erreur pourrait être plus clair. BTW, [JSLint] (http://www.jslint.com) donne un message d'avertissement lorsque vous le chargez un tableau avec une virgule. –

2

la constante '2' est nulle ou non un objet

if (! localtree[idx][2]) { 

JavaScript n'a pas constantes, du moins pas encore. Et vous ne vérifiez pas un nombre, mais un membre d'un tableau, à savoir: la variable avec le numéro d'index 2 de l'objet localtree[idx] (où idx doit contenir une chaîne pour faire référence à une propriété d'objet ou un numéro d'index pour faire référence à un tableau) .

+0

Oui, mais le message d'erreur indique spécifiquement que «2» est le problème. De plus, '2' est une constante. – NXT

Questions connexes