Как вы говорите, вам нужно показать код. : -)
Ошибка переполнения стека обычно происходит, когда ваша функция вызывает слишком много гнезд. См. Поток «Переполнение потока стека» для некоторых примеров того, как это происходит (хотя в случае этого вопроса ответы преднамеренно вызывают переполнение стека).
Помимо уже упомянутых...
Используя эти for..in
конструкция для итерации по массивам
(выполняет итерации по методам массива И индексам)
Используя JavaScript, встроенный как <body onload="doThis();">
(негибкий и предотвращает несколько слушателей события)
Используя 'Функцию ()' конструктор
(плохо по тем же причинам eval()
плохо)
Передающие строки вместо функций к setTimeout
или setInterval
(также использование eval()
внутренне)
Доверие неявным операторам, не используя точки с запятой
(дурная привычка взять, и может привести к неожиданному поведению)
Используя/*.. */для блокирования строк кода
(может вмешаться в regex литералы, например: /* /.*/ */
)
< evangelism> И конечно, не используя Прототип;) </evangelism>
Язык:
загрязнение Пространства имен путем создания большого места переменных в глобальном контексте.
обработчики Событий привязки в форме 'foo.onclick = myFunc' (нерастяжимый, должен использовать attachEvent/addEventListener).
Используя оценку почти в любом non-JSON контексте
Почти каждое использование document.write (используют методы DOM как document.createElement)
Разработка прототипа против Объектного объекта (БУМ!)
А маленький это, но выполнение больших количеств строки concats с '+' (создание массива и присоединение к нему намного более эффективны)
что касается несуществующего undefined
постоянный
Дизайн/Развертывание:
(Обычно) не обеспечение noscript поддержка.
Не упаковка Вашего кода в единственный ресурс
встроенное Помещение (т.е. тело) сценарии около вершины тела (они блочная загрузка)
конкретный Ajax:
не указание на запуск, конец или ошибку запроса пользователю
опрос
передача и парсинг XML вместо JSON или HTML (где соответствующий)
редактирование: Я продолжаю думать о больше!
Самое большое для меня не понимает сам язык программирования JavaScript.
Тогда существуют те для времени выполнения браузера:
И наконец проблемы развертывания.
< разъем> у меня есть [приблизительно 110] клиентские подсказки по оптимизации , которые покрывают некоторые вещи, которые я упомянул выше, и больше, на моем блоге < / разъем>
видит также Crockford "JavaScript: Хорошие Части" для различных других вещей избежать. ( редактирование: предупреждение, он немного строг в некоторых его предложениях как использование "===" по "==", так возьмите их с любой мелкой частицей соленых работ для Вас)
Несколько вещей прямо сверху моей головы. Я отредактирую этот список, когда я буду думать о больше.
любое использование 'с'
с (document.forms["mainForm"].elements) {
input1.value = "спам";
input2.value = "спам";}
любая ссылка на
document.all
в Вашем коде, , если это не в специальном коде, только для IE для преодоления ошибки IE. ( кашель document.getElementById () кашель )
Не используя основанную на сообществе платформу, чтобы сделать повторяющиеся задачи как управление DOM, обработка событий, и т.д.