2010-12-07 59 views
2

IE8で無意味なエラーメッセージが表示されます。定数 '2'がnullかオブジェクトではないことを教えてください。コードの行がある:IE8 Javascript: '2'がnullまたはオブジェクトではありません

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

Iはまた、このようにそれを符号化しようとした:その場所で

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

配列内の値は常にゼロ(今のところ)です。

IE8で数字2がnullであるとはどのように考えることができますか?私は神秘的だ!

正確なエラーは次のとおりです。

Message: '2' is null or not an object 

は、誰もがこれを見ていますか?

EDIT:これは非常に誤解を招くエラーメッセージです。実際に何がうまくいかなかったのか、私の答えを見てください。

+0

どのようにlocaltreeを初期化していますか? –

+1

Firefoxはこれに対してどのようなエラーを出すのですか? –

答えて

5

これは非常に混乱しているエラーメッセージです。私はアレイの終わりを超えて1つの要素を踏み出していたことが判明しました。 'idx'は配列参照として扱おうとしていた存在しない値を参照していました([2])。

「2」がヌルであることを伝えるのではなく、「localtree [idx]」がヌルであったはずです。

これの根本的な原因は、配列内に余分なヌル値をもたらす配列を定義した末尾のカンマがあることでした。 Firefoxでは、末尾のカンマは無視されます(perlのように)が、IEでは重要です。

+0

ああ、古典的な末尾のカンマの問題。 'localtree [idx] [0]'と '... [1]'が存在するので(localtree [idx]は 'null'ではありません。 [2]はです。つまり、私はエラーメッセージがより明確になることに同意します。 BTW、[JSLint](http://www.jslint.com)は、末尾にカンマが付いた配列を入力すると警告メッセージを表示します。 –

2

定数は '2' オブジェクト

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

ヌルであるかどうかJavaScriptは、少なくともまだ、定数を有していません。そして、配列のメンバーである配列番号2の変数localtree[idx]idxには、オブジェクトプロパティを参照する文字列または配列を参照するインデックス番号が含まれていなければなりません) 。

+0

はい、エラーメッセージには、特に「2」が問題であることが示されています。また、 '2'は定数です。 – NXT

関連する問題