Итак, мы наткнулись на 18 миллионов элементов данных, и система рухнула. Потребовалось немного времени, чтобы сузить круг, но это была оскорбительная авария…
const lilLookup = { lanc: 'lancaster', berks: 'berkshire' } if (lilLookup[stringToCheck] !== undefined) { return lilLookup[stringToCheck] } return stringToCheck
Хм. Логика выглядит нормально. Мы добавили логирование и выяснили, что такое stringToCheck, когда он ломается.
stringToCheck === 'constructor'
Оооо «конструктор», звучит знакомо. О, Боже. Пожалуйста, Боже, пусть это будет Нежить Дог!
Если это Undead Dawg, нам лучше проверить каждый запрос на наличие ошибки 30/18000000, которая может произойти где угодно.
lilLookup['constructor'] === A Function
Мораль этой басни, мои друзья Javascript, заключается в том, чтобы проверять hasOwnProperty на наличие поисковых запросов, если вы не можете пережить визит, очень… очень… время от времени, от Undead Dawg.
const lilLookup = { lanc: 'lancaster', berks: 'berkshire' } if (lilLookup.hasOwnProperty(stringToCheck)) { return lilLookup[stringToCheck] } return stringToCheck