Избегать использования функции 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;
Комментариев нет:
Отправить комментарий