Избегать использования функции eval()
1: //slow
2: setInterval(1000, "alert('hello')");
3:
4: //faster
5: setInterval(1000, function() { alert('hello'); });
Избегать использования выражения with
1: //slow
2: with (test.object) {
3: foo = 'Value of foo property of object';
4: bar = 'Value of bar property of object';
5: }
6:
7: //faster
8: var myObj = test.object;
9: myObj.foo = 'Value of foo property of object';
10: myObj.bar = 'Value of bar property of object';
Не использовать try-catch-finnaly в требующих времени функциях
1: //slow
2: var object = ['foo', 'bar'], i;
3: for (i = 0; i < object.length; i++) {
4: try {
5: // do something that throws an exception
6: }
7: catch (e) {
8: // handle exception
9: }
10: }
11:
12: //faster
13: var object = ['foo', 'bar'], i;
14: try {
15: for (i = 0; i < object.length; i++) {
16: // do something
17: }
18: }
19: catch (e) {
20: // handle exception
21: }
Использовать минимум глобальных переменных
1: //slow
2: var i, str = '';
3: function globalScope() {
4: for (i=0; i < 100; i++) {
5: str += i;
6: }
7: }
8: globalScope();
9:
10: //faster
11: function localScope() {
12: var i, str = '';
13: for (i=0; i < 100; i++) {
14: str += i;
15: }
16: }
17: localScope();
В сложных и долговременных циклах стараться не использовать выражение for-in
Не делать многоразовых арифметических операций над строками одним выражением
1: //Slow
2: a += 'x' + 'y';
3:
4: //Faster
5: a += 'x'; a += 'y';
6:
Бинарные, тернарные, простые операции будут выполняться быстрее чем вызов аналогичных функций
1: //slow
2: var min = Math.min(a, b);
3: arr.push(val);
4:
5: //faster
6: var min = a < b ? a : b;
7: arr[arr.length] = val;
Не создавать без надобности переменные, имеющие привязки к DOM-модели
1: //bad
2: var car = new Object();
3: car.color = "red";
4: car.type = "sedan";
5:
6: //good
7: var car = { color : "red"; type : "sedan"}
Стараться не вызывать элементы из глобального скопа
1: //bad
2: var url = location.href;
3:
4: //good
5: var url = window.location.href;
Не использовать длинных комментариев и длинных названий переменных
1: //bad
2: function someFunction() {
3: var user_first_last_name = "first last"; /* stores the full name of user*/
4: }
5:
6: //good
7: function someFunction() {
8: var fullName = "first last";
9: }
Кешировать переменные, значения которых не меняются
1: //slow
2: var m = 10;
3: for(var i=0; i<250; i++)
4: n += Math.tan(m);
5:
6: //falster
7: var m = 10;
8: var exp = Math.tan(m);
9: for(var i=0; i<250; i++)
10: n += exp;
Комментариев нет:
Отправить комментарий