Задать вопрос
@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
}
  • Вопрос задан
  • 400 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 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;
}
Ответ написан
devellopah
@devellopah
просто убери 4-ю строчку
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы