Всем привет!
Есть несколько мелких вопросов:
1. Почему счетчик, вызванный первым способом, работает корректно, а вторым - нет?
let counter = () => {
let i = 0;
return () => i++;
};
let cnt = counter();
console.log(cnt(), cnt(), cnt()); // 0 1 2
console.log((counter())(), (counter())(), (counter())()); // 0 0 0
2. Какой из этих двух вариантов реализации суммирующей функции лучше (выразительнее и быстрее)?
let sum = (...arr) => {
if (arr.every(item => typeof(item) === "number")) return arr.reduce((acc, cur) => acc + cur, 0)
else throw new Error("wrong type");
};
let sum2 = (...arr) => arr.reduce((acc, cur) => {
if (typeof(cur) === "number") return acc + cur;
else throw new Error("wrong type");
}, 0);
3. Как вообще работает этот код?
console.log(20e-1["toString"](2)); // 10