script.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. function makeProfileTimer() {
  2. let time1 = performance.now()
  3. let timeInner = () => {
  4. let time2 = performance.now()
  5. return time2 - time1
  6. }
  7. return timeInner;
  8. }
  9. // var timer = makeProfileTimer()
  10. // alert('Замеряем время работы этого alert'); //некий код, время выполнения которого мы хотим измерить с высокой точностью
  11. // alert(timer()); //alert должен вывести время в микросекундах от выполнения makeProfileTimer до момента вызова timer(),
  12. // // т. е. измерить время выполнения alert
  13. function makeSaver(funk) {
  14. let savedResult = funk()
  15. let result = () => {
  16. return savedResult
  17. }
  18. return result
  19. }
  20. // var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  21. // // в примере). На этом этапе Math.random НЕ вызывается
  22. // var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  23. // var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  24. // //в makeSaver функцию;
  25. // value1 === value2 // всегда true
  26. // var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
  27. // var value3 = saver2()
  28. // var value4 = saver2()
  29. // value3 === value4 // тоже должно быть true
  30. function starter (number) {
  31. console.log(number)
  32. number = number - 1
  33. starterInner()
  34. function starterInner() {
  35. setTimeout(() => {
  36. if(number > 0){
  37. console.log(number)
  38. number = number-1
  39. return starterInner(number)
  40. } else {
  41. return console.log("done")
  42. }
  43. }, 1000)
  44. }
  45. }
  46. starter(5)