アクションを実行する前に、配列内の次の要素が存在するかどうかを確認したいのですが、未定義かどうかを確認できません。例えば:
// Variable and array are both undefined
alert(typeof var1); // This works
alert(typeof arr[1]); // This does nothing
var arr = [1,1];
alert(typeof arr[1]); // This works now
アクションを実行する前に、配列内の次の要素が存在するかどうかを確認したいのですが、未定義かどうかを確認できません。例えば:
// Variable and array are both undefined
alert(typeof var1); // This works
alert(typeof arr[1]); // This does nothing
var arr = [1,1];
alert(typeof arr[1]); // This works now
alert(typeof arr[1]); // This does nothing
エラーで失敗しているため、何もしません。
ReferenceError: arr is not defined
代わりにこの方法を試してみると:
var arr = [];
alert(typeof arr[1]);
その後、期待どおりの結果が得られます。ただし、このチェックを行うより良い方法.length
は、配列のプロパティを使用することです。
// Instead of this...
if(typeof arr[2] == "undefined") alert("No element with index 2!");
// do this:
if(arr.length <= 2) alert("No element with index 2!");
配列を操作するときは、配列インデックスにアクセスする前に、配列自体も確認する必要があります。
間違い:
if (arr[0] == ...)
良い:
if (typeof arr != "undefined" and arr[0]==......