1. При объединении строк в браузерах более ранних версий (таких как IE6, IE7 и т. д.) использование метода соединения массива гораздо более эффективно, чем использование знака + для соединения (например, ['aaa', 'bbb', 'ccc'].join() более эффективно, чем 'aaa'+'bbb'+'ccc');
2. Массив:
Pop более эффективен, чем сдвиг, а push более эффективен, чем unshift. Это важно для проектирования структуры двоичной кучи. Лучше всего размещать самый большой или самый маленький элемент в конце массива.
3. При округлении чисел лучше всего использовать операции сдвига:
1,1 >> 0;
4. Используйте прямые величины для создания массива и объекта:
вар а = [];
вар о = {};
5. Не вставляйте слишком много уровней объектов, чтобы сократить поиск объектов:
Не используйте abcde, этот метод проектирования получает объект e.
6. Значение, соответствующее ключу-значению, по сравнению с случаем переключения, соответствие ключу-значению, более эффективное, чем случай переключения, было протестировано в различных браузерах, вы можете прочитать статью об этом сравнении, небольшой эксперимент с javascript;
7. Если вы используете jq, также выполняется сравнение $('xxxx').empty().append('xxxxxxx'); и $('xxxxxx').html('xxxxx'); результат: $ ('xxxx').empty().append('xxxxxxx'); адрес статьи — небольшой эксперимент jQuery;
8. Петля
В JavaScript мы можем использовать три цикла: for(;;), while() и for(in). Среди этих трех циклов for(in) крайне неэффективен, поскольку ему необходимо запрашивать хеш-ключ, пока он есть. Можно. Его следует использовать как можно меньше. Следует сказать, что производительность циклов for(;;) и while в основном эквивалентна (при ежедневном использовании).
Если переменная цикла увеличивается или уменьшается, не присваивайте значение только этой переменной цикла. Используйте вложенный оператор ++ или -- при последнем чтении.
Если вы хотите сравнить длину массива, вам следует заранее поместить атрибут длины массива в локальную переменную, чтобы уменьшить количество запросов.
9. Локальные переменные и глобальные переменные
Скорость доступа к локальным переменным выше, чем к глобальным, поскольку глобальные переменные фактически являются членами глобального объекта, а локальные переменные помещаются в стек функции.
10. Не используйте Eval
Использование eval эквивалентно повторному вызову механизма интерпретации для запуска содержимого во время выполнения, что занимает много времени. В настоящее время шаблоны функций могут быть реализованы с использованием замыканий, поддерживаемых JavaScript (подробную информацию о замыканиях см. в соответствующем материале по функциональному программированию);
11. Конкатенация строк
Если вы добавляете строку, лучше всего использовать операцию s+=anotherStr вместо s=s+anotherStr;
12. Преобразуйте числа в строки и используйте «» + 1. Хотя это выглядит немного некрасиво, на самом деле это наиболее эффективно с точки зрения производительности:
("" +) > String() > .toString() > новая строка()
Эта статья на самом деле чем-то похожа на «прямое количество» ниже. Попробуйте использовать внутренние операции, которые можно использовать во время компиляции, чтобы они выполнялись быстрее, чем пользовательские операции, используемые во время выполнения.
String() — это внутренняя функция, поэтому она очень быстрая, тогда как .toString() необходимо запрашивать функцию в прототипе, поэтому она не так быстра, как функция new String(), которая возвращает точную копию;
13. Преобразование чисел с плавающей запятой в целые числа. Многие люди любят использовать parseInt(). На самом деле, parseInt() используется для преобразования строк в числа, а не между числами с плавающей запятой и целыми числами. Math.floor() или Math.round().
14. Операция обхода строки
Для выполнения операций цикла над строками, таких как замена и поиск, следует использовать регулярные выражения, поскольку скорость цикла самого JavaScript относительно медленная, а работа регулярных выражений представляет собой API, написанный на языке C, и производительность очень хорошая. ;
15. Таймер
Если вы нацелены на постоянно выполняемый код, вам следует использовать не setTimeout, а setInterval. setTimeout необходимо каждый раз сбрасывать таймер;
Обновление..., пожалуйста, следите за обновлениями!