Производительность кода и разница между функцией и выражением именованной функции в Java Script - PullRequest
0 голосов
/ 06 сентября 2018

Иногда бывает, что в коде более 50 000 строк, и их следует оптимизировать, чтобы он работал быстрее. Вот у меня такой вопрос про функции. Мы знаем разницу между:

function f () {
  //code here
}

и

var f = function () {
  //code here
}

first объявляется мгновенно при загрузке кода, а second объявляется в процессе прохождения кода. Это означает, что:

f();
var f = function () {
  //code here
}

это выдаст ошибку. Однако:

f();
function f () {
  //code here
}

это будет нормально работать.

Мой вопрос такой. Есть ли принципиальная разница между этими двумя декларациями? Может ли это повлиять на производительность таких больших проектов, где строки кода выше 50k?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Объявления функций в JavaScript поднимаются в верхней части вмещающей функции или глобальной области видимости.Вы можете использовать функцию до того, как объявите ее:

Объявления функций загружаются перед выполнением любого кода.

hoisted(); // logs "foo"

function hoisted() { console.log('foo'); }

AND

Обратите внимание, что выражения функций не поднимаются (вы не можете вызывать их раньше):

Выражения функций загружаются только тогда, когда интерпретатор достигает этой строки кода.

notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function () { console.log('bar'); };

0 голосов
/ 06 сентября 2018
f();
var f = function () {
  //code here
}

Это не сработает, потому что объявление, если поднято, но присвоение - нет, на самом деле оно работает так:

var f;
f();
f = function () {
  //code here
}
0 голосов
/ 06 сентября 2018

на самом деле есть некоторая разница http://jsben.ch/SqczP

Ветка с объявлением на основе переменных демонстрирует повышение производительности на 11%.

Но фактический ответ на ваш вопрос: нет, не будет, пока вы не решите объявить функции в большом цикле. и даже тогда вы перестаете делать такую ​​структуру вместо оптимизации объявления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...