Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.04.2015, 21:08
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Вообще, оптимизатор может понять, что функция вырожденная и просто заинлайнить ее. Главное - инкапсулировать и не юзать эвал.
Ответить с цитированием
  #12 (permalink)  
Старый 25.04.2015, 22:44
Аспирант
Отправить личное сообщение для tiundv Посмотреть профиль Найти все сообщения от tiundv
 
Регистрация: 22.04.2015
Сообщений: 32

Сообщение от Erolast Посмотреть сообщение
Вообще, оптимизатор может понять, что функция вырожденная и просто заинлайнить ее. Главное - инкапсулировать и не юзать эвал.
А теперь плиз по русски..Для чайника..
Ответить с цитированием
  #13 (permalink)  
Старый 26.04.2015, 07:27
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Перед компилированием кода любой нормальный интерпретатор прогоняет его через оптимизатор. Грубя говоря, вот так:
//до оптимизации
function testForPositiveness(numbers) {
    let isPositive = (number) => number > 0;
    let results = [];
    
    for (let number of numbers) {
        results.push(isPositive(number));
    }
    
    return results;
}

//после оптимизации
function testForPositiveness(numbers) {
    let results = [];
    
    for (let number of numbers) {
        results.push(number > 0);
    }
    
    return results;
}


Здесь оптимизатор видит, что функция isPositive может быть использована только в testForPositiveness и что можно с чистой совестью заинлайнить её. Если бы isPositive была где-нибудь в глобальном скопе, ничего не вышло бы (неизвестно, кто еще может её вызывать). Если бы где-то внутри testForPositiveness стоял эвал, ничего не вышло бы (по той же причине; заодно похерилась бы куча остальных возможных оптимизаций).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по toDataURL() GodZiLA Общие вопросы Javascript 0 03.06.2014 17:21
Вопрос по функциям eirnvn Общие вопросы Javascript 7 15.04.2013 12:39
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по удалению элемента в массиве и по функциям bot87 Общие вопросы Javascript 5 26.04.2012 14:43
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30