Обработка неопределенного ключа в Javascript

#javascript #dictionary #error-handling

#javascript #словарь #обработка ошибок

Вопрос:

Я пытаюсь получить доступ к некоторым парам ключ / значение на карте, но не всегда знаю, какие ключи доступны. Мне нужно отобразить информационное сообщение, когда определенные ключи не найдены. Эта карта является глобальной и используется в большом количестве мест, например.

 data = { 'KEY_A' : "A: {0}" }
  

Моя текущая реализация для обнаружения ошибок заключалась в использовании глобального прослушивателя ошибок:

 window.onerror = function(msg, url, line, col, error) {

    console.log("Error: "   msg   "nURL: "   url   "nLine: "   line);
    return false;
};
  

И затем я обращаюсь к карте со следующим:

 theKey = 'KEY_A';
console.log(data[theKey].format("extras"));
  

Проблема здесь в том, что при срабатывании обработчика ошибок я вижу это сообщение в своей консоли:

 Error: TypeError: data[theKey] is undefined
URL: http://localhost:8080/index.html#pages/errors
Line: 18
  

Проблема в том, что журнал содержит имя моей переменной theKey вместо фактического значения самого ключа, что означает, что в обработчике ошибок я фактически не могу зарегистрировать ключ, который не удалось извлечь?

Как я мог бы получить значение ключа внутри моего обработчика ошибок?

Комментарии:

1. Да, это действительно раздражает (я имею в виду, что движок, вероятно, действительно знает, каково текущее значение, нет причин не передавать его с ошибкой). Единственным решением, которое я могу придумать, было бы перехватывать его с помощью прокси-сервера или выполнять надлежащие проверки при каждом доступе.

2. Обязательно ли это должно быть в обработчике ошибок, или вы открыты для изменения способа доступа к ключам?

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