Я создал четыре различные функции, например:
var normal = function() {
return;
};
var control = function() {
return;
alert("Hello, world!");
};
var withArguments = function() {
return;
arguments;
};
var withEval = function() {
return;
eval("");
};
Поскольку все они просто ничего не делают и сразу возвращаются, я ожидаю, что все они будут иметь одинаковую скорость. Но после тестирование на jsPerf, я обнаружил, что normal
и control
выполняются примерно одинаково, но withArguments
и withEval
выполняются гораздо медленнее.
Почему эти неисполненные заявления могут повлиять на производительность? Поскольку они никогда не исполняются, как это возможно, чтобы они имели какой-либо эффект?