(я понимаю, что перебор массива с числовыми индексами с 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 - это проблема методом проб и ошибок. Итак, мои вопросы:
- Почему я получаю ошибку выше с помощью кнопки "for ... in"?
- Почему я не получаю ошибку с помощью "for... в этом работает "кнопка?