makeSaver.js 1021 B

1234567891011121314151617181920212223242526272829303132
  1. const makeSaver = functionParam => {
  2. let result;
  3. let runned = false;
  4. return (...args) => {
  5. if(!runned) {
  6. result = functionParam.apply(null, args);
  7. runned = true;
  8. }
  9. return result;
  10. };
  11. }
  12. let saver = makeSaver(Math.random);
  13. let value1 = saver();
  14. let value2 = saver();
  15. console.log(value1 === value2); // true
  16. let saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)]); //saved function called
  17. let value3 = saver2();
  18. let value4 = saver2();
  19. console.log(value3 === value4); // true
  20. let namePrompt = prompt.bind(window, 'Как тебя зовут?');
  21. let nameSaver = makeSaver(namePrompt);
  22. alert(`Привет! Prompt еще не было!`);
  23. alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`);
  24. alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`);