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.