CodeMirror - "Невозможно прочитать свойство 'chunkSize' из неопределенного" при использовании replaceRange при итерации по массиву с for ... in - PullRequest
0 голосов
/ 09 ноября 2019

(я понимаю, что перебор массива с числовыми индексами с for ... in - это плохая практика ( объяснено здесь ), но я не понимаю, как это здесь уместно. Я хотел бы понять, почемувозникает проблема, описанная ниже. Мне не хватает опыта и навыков, чтобы прочитать исходный код CodeMirror, чтобы узнать, что пошло не так, к сожалению.)

Пример приложения JSFiddle

Тамэто сгенерированный здесь «2D массив» (array []), 3 строки, каждая строка состоит из 4 элементов (3 числа и один символ \ n). Моя цель состояла в том, чтобы перебрать весь «2D массив» и поместить каждый символ в редактор CodeMirror.

  • Если вы нажмете кнопку «for ... in», код сделает первые две строки массива, а затем сбросит следующую ошибку:

Uncaught TypeError: Cannot read property 'chunkSize' of undefined

  • Если вы нажмете кнопку «для ... в этом деле», вы получите правильный результат без ошибок. Единственная разница между этой и предыдущей функциями заключается в том, что аргумент "line" метода replaceRange имеет +1. Таким образом, по какой-то причине он отлично работает
  • Если вы нажмете кнопку "forEach", все будет работать нормально

Я обнаружил, чтоПеременная row - это проблема методом проб и ошибок. Итак, мои вопросы:

  1. Почему я получаю ошибку выше с помощью кнопки "for ... in"?
  2. Почему я не получаю ошибку с помощью "for... в этом работает "кнопка?
...