Как поймать индекс массива вне границ в JavaScript? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу отловить ошибку, когда происходит доступ за пределы массива, но, похоже, она не выдает ошибку.

let arr = [2,4,5];
let test = arr[3];
console.log(test);

Я знаю, что могу проверить неопределенность и выдать ошибку

if (arr[3] === undefined) throw new Error();

но почему я не могу просто попытаться поймать это следующим образом.

let arr = [2,4,5];
try {
      let tmp = arr[3];
    } catch(e) {
      lastIndex = findLastIndex(arr, high / 2, high);
      break;
    }

1 Ответ

1 голос
/ 05 июля 2019

Как вы можете видеть, доступ к несуществующему индексу массива не приводит к ошибке - значение "accessed" будет просто undefined. Обычные объекты работают так же:

const obj = {};
// No error:
const val = obj.foo;

console.log(val);

Но ошибки, как правило, не должны использоваться для потока управления - ошибки должны обрабатывать исключительных случаев. Для того, что вы делаете, я бы вместо этого использовал if / else, например

const arr = [0, 1, 2];
if (4 in arr) {
  const val = arr[4];
  // ...
} else {
  console.log('4 is not in the arr');
}
...