N
let f = x => x * 42;
что может сделать такого компилятор что функция перестанет быть чистой?
Size: a a a
N
S
S
import { performance } from "perf_hooks";
const numbers = [];
for (let i = 0; i < 100_000_000; i++) {
numbers.push(i);
}
function sum(numbers) {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
let startPerf = performance.now();
const result = sum(numbers);
let endPerf = performance.now();
console.log(result, endPerf - startPerf);
EK
N
N
EK
EK
EK
EK
S
import { performance } from "perf_hooks";
const numbers = [];
for (let i = 0; i < 100_000_000; i++) {
numbers.push(i);
}
function sum(numbers) {
let result = 0;
for (let i = 0; i < numbers.length; i++) {
result += numbers[i];
}
return result;
}
let startPerf = performance.now();
const result = sum(numbers);
let endPerf = performance.now();
console.log(result, endPerf - startPerf);
EK
S
M
S
Д
Д
EK
DM
DM
var let и const
в первую очередь связаны с тем, чтобы продемонстрировать, что любые рассуждения о том? что дескать var
устарел и настощие тру программисты используют только let и const,
под собой не имеют никаких оснований. let и const
. Строго говоря, let и const это эквивалент var
с дополнительной логикой обеспечения контроля блочной области видимости. TDZ - temporal dead zone.
Из этого следует очень простой вывод - априори let и conts
не могут заменить var
в силу того что это тот же самый var
с дополнительными издержками на обеспечения их работы. let и const
приведет к статистически фиксируемой разнице в производительности, в сравнении с тем же кодом но в котором использован var
. var
не устарел и никогда не устареет, по причине того, что это ровно таже кодовая база что и let с const.
Никто его из стандарта никогда не удалит. И это я еще не углублялся в пояснения работы GC, что только var
ползволяет легко контролировать работу GC
. В отличии от let с const
которые в силу их особенностей работы, создают условия когда осуществить такой контроль не представляется возможным в принципе.var
, ему let и const
не нужны, потому как они не дают ему ровно никаких преимуществ в работе. За исключением специфических случаев эксплуатации оптимизаций для const
на уровне turbofun
.