Показать сообщение отдельно
  #181 (permalink)  
Старый 28.08.2018, 21:00
R2R R2R вне форума
Интересующийся
Отправить личное сообщение для R2R Посмотреть профиль Найти все сообщения от R2R
 
Регистрация: 22.08.2018
Сообщений: 13

Всем привет!
Есть несколько мелких вопросов:

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
Ответить с цитированием