Почему мой код выдает ошибку только тогда, когда отладчик не подключен?

#javascript

#javascript

Вопрос:

У вас когда-нибудь была такая проблема? Ваш код работает с включенным отладчиком, но когда он выключен, он не работает??

Итак, выше у меня есть 2 ссылки на записи экрана, показывающие, как при активном отладчике работает мой код, но когда он не выдает ошибку. Если у кого-нибудь хватит смелости взглянуть на мой codepen проблемы, я был бы благодарен. (Отладчик не работает в codepen, но если вы возьмете код и поместите его в свой редактор, вы увидите, что он работает, когда отладчик включен.) https://codepen.io/oliver-saintilien/pen/jOrQBLv

stackoverflow говорит, что я ДОЛЖЕН включать код всякий раз, когда я использую ссылку codepen, однако код немного запутан. Поэтому я просто опубликую код, в котором возникает ошибка, но просто помните, что он действительно работает, если у меня подключена отладка.

 //Uses path to return nested object
const traverse = (obj, path) => {
  console.log(`1 time`);
  return path.split(".").reduce((object, key) => object[key], obj);
};
 

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

1. Как вы заставили эту панель появляться после выбора текста?

2. Да, это все в моем коде codepen (в ответ на то, как я заставляю всплывать эту панель), однако, чтобы перейти к сути, я на самом деле просто решил свою собственную проблему, хотя я не совсем понимаю, почему наука, стоящая за этим, ее исправляет. По какой-то причине мое изменение let parentFolder = this[0].outerText.replace(/s/g, '') на let parentFolder = this[0].text.replace(/s/g, '') заставляет его работать сейчас без включения отладчика, хотя я не знаю почему, но эй, это работает. Просто для ясности, мое использование метода .text вместо .outerText того, чтобы имело значение.

3. Ваш ответ на мой вопрос: «прочитайте сотни строк кода, чтобы понять это?» 🙂 Никто не собирается этого делать. Но рад, что вы разобрались.

4. Да, я вас слышу, вас тоже не виню, но да, спасибо, я тоже счастлив

5. Затем, когда вы используете отладчик, функция остановки основного потока и таймера может возникнуть и запуститься.

Ответ №1:

По какой-то причине, изменив

let parentFolder = this[0].outerText.replace(/s/g, '')

Для

let parentFolder = this[0].text.replace(/s/g, '')

теперь он работает без включения отладчика, хотя я не знаю почему, но, эй, это работает. Просто для ясности, мое использование метода .text вместо .outerText того, чтобы имело значение.