@junior81

Почему return не срабатывает в функции?

function multiply(){
  let calc = 1;
  for(let i = 0, len = arguments.length; i < len; i++){
     if(arguments === 0 ) return 0;
    calc = calc * arguments[i];
  }

  return calc
}
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
myspace
@myspace
Вы делаете return в цикле, просто прерывая цикл, а не останавливая функцию. Вынесите это условие за цикл
function multiply(){

  if( arguments.length === 0 ) {
     return 0; 
  }

  let calc = 1;

  for(let i = 0, len = arguments.length; i < len; i++){
    calc = calc * arguments[i];
  }

  return calc
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Исправьте эту строчку:
if(arguments[i] === 0 ) return 0;
Надо сравнивать с нулём не весь массив аргументов, а значение очередного аргумента.

Upd.
function multiply() {
	let len = arguments.length;
	if( 0 === len) return 0;
	
	for (let i = 0, calc = 1; i < len; i++) {
		if (arguments[i] === 0) return 0;
		calc = calc * arguments[i];
	}
	return calc;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽