Функция один раз, которая принимает обратный вызов в качестве входных данных и возвращает функцию.

Напишите функцию один раз, которая принимает обратный вызов в качестве входных данных и возвращает функцию. Когда возвращаемая функция вызывается в первый раз, она должна вызвать обратный вызов и вернуть этот вывод. Если он вызывается еще раз, вместо повторного вызова обратного вызова он просто вернет выходное значение с первого раза.

Помогите! У меня возникла ошибка типа Syntax-error Illegal return statement Я застрял при написании закрытия для этой задачи выше, и вот мой код:

function once(func) {
  var called = 0,result;
	function inner(num){
    if(!result && called <2){
      called++;
      result = func(num);
      return result;
    }else{
      return result;
    }
    }
    
  }
  return inner;
}
0
0
517
2

Ответы 2

Вам нужно объявить вызываемую переменную вне функции

var called = 0;
function once(func) {
  var result;
	function inner(num){
    if(!result && called <2){
      called++;
      result = func(num);
      return result;
    }else{
      return result;
    }
    }

  return inner;
}

При запуске этого фрагмента все еще возникает ошибка "Uncaught SyntaxError: Illegal return statement" ...

Alexander Nied 26.10.2018 07:39

@AlexanderNied дайте дополнительный } за то, что выдает ошибку. Я исправил ошибку. пожалуйста, проверьте.

Mohammad Ali Rony 26.10.2018 07:43

Да, это решило проблему.

Alexander Nied 26.10.2018 07:45

Спасибо чувак. Я просто неправильно прочитал свой код, и есть дополнительная скобка, которая сделала мой код ошибочным, ребята. Спасибо.

Min Thiha Maung 26.10.2018 09:12

@MinThihaMaung Не могли бы вы отметить этот ответ правильным, если он полезен

Mohammad Ali Rony 26.10.2018 10:57

I got an error like Syntax-error Illegal return statement

  } //<--- extra/un-wanted
  return inner;
}

Попробуй это:

var add = (function(cb) {
  var done = false;
  var data = 0;
  return function(num) {
    if (!done) {
      done = true;
      data = (num + 1);
    }
    cb(data);
  };
});

var bar = function(res) {
  console.log('bar, res = ', res);
};

var foo = add(bar);

foo(2);
foo(1);

Спасибо чувак. Я просто неправильно прочитал свой код, и есть дополнительная скобка, которая сделала мой код ошибочным, ребята. Спасибо

Min Thiha Maung 26.10.2018 09:12

Другие вопросы по теме