Wednesday 15 May 2013

Performance of function declaration vs function expressions in javascript in a loop -



Performance of function declaration vs function expressions in javascript in a loop -

in next jsperf: http://jsperf.com/defined-function-vs-in-loop-function/3

you notice code:

for (var = 0; < loops; i++) { function func(a, b) { homecoming + b; }; func(i, i); }

performs on par code:

function declaredfn(a, b) { homecoming + b; }; (i = 0; < loops; i++) { declaredfni, i); }

but code:

for (i = 0; < loops; i++) { var func = function(a, b) { homecoming + b; }; func(i, i); }

is slower code:

var expfunc = function(a, b) { homecoming + b; }; (i = 0; < loops; i++) { expfunc(i, i); }

why? happening internally?

if define function using function fn() {} declaration, gets hoisted top. therefore, code:

for (var = 0; < loops; i++) { function func(a, b) { homecoming + b; }; func(i, i); }

is exactly equivalent code:

function declaredfn(a, b) { homecoming + b; }; (i = 0; < loops; i++) { declaredfn(i, i); }

because function declaration gets hoisted top.

however, var fn = function() {} expressions do not hoisted, end defining function on over every single loop.

see this answer more info.

javascript performance

No comments:

Post a Comment