Комментарии 3
Тот момент, когда опять придется переписывать свой код.
+4
НЛО прилетело и опубликовало эту надпись здесь
По поводу 1 пункта, очень часто вложенные функции из функции не получится вынести (хотя бы даже чтобы глобал скоп не засорять кучей ненужных функций)
Можно сделать проще и воспользоваться тем фактом, что функция это объект, у объекта могут быть «приватные методы» и собственно и вернуть экземпляр объекта с уже созданными единожды функциями trimStart и trimEnd. Эффект будет тот же:
Оригинал:
Вынесли функции:
Вернули объект:
В firefox кстати результат для всех 3 случаев примерно ± одинаков
Можно сделать проще и воспользоваться тем фактом, что функция это объект, у объекта могут быть «приватные методы» и собственно и вернуть экземпляр объекта с уже созданными единожды функциями trimStart и trimEnd. Эффект будет тот же:
var trim = function() {
function trimStart(string) {
return string.replace(/^\s+/g, "");
}
function trimEnd(string) {
return string.replace(/\s+$/g, "");
}
return function (string) {
return trimEnd(trimStart(string))
}
}();
Оригинал:
trim1: 138.231ms
Вынесли функции:
trim2: 102.128ms
Вернули объект:
trim3: 101.680ms
В firefox кстати результат для всех 3 случаев примерно ± одинаков
-1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Три принципа производительности в JavaScript, делающие Bluebird быстрым