Dz9js.html 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. //makeProfileTimer
  12. function makeProfileTimer() {
  13. let timeStart = performance.now()
  14. return function sec() {
  15. let timeEnd = performance.now()
  16. return `Proshlo ${timeEnd - timeStart} millisec`
  17. }
  18. }
  19. let timer = makeProfileTimer()
  20. alert('Замеряем время работы этого alert')
  21. alert(timer());
  22. //makeSaver
  23. function makeSaver(name) {
  24. let promptNotCalled = true;
  25. let nameAgain
  26. return function () {
  27. if (promptNotCalled) {
  28. nameAgain = name()
  29. promptNotCalled = false
  30. }
  31. return nameAgain
  32. }
  33. }
  34. var saver = makeSaver(Math.random) //создает функцию-хранилище результата переданной в качестве параметра функции (Math.random
  35. // в примере). На этом этапе Math.random НЕ вызывается
  36. var value1 = saver() //saver вызывает переданную в makeSaver функцию, запоминает результат и возвращает его
  37. var value2 = saver() //saver в дальнейшем просто хранит результат функции, и более НЕ вызывает переданную
  38. //в makeSaver функцию;
  39. value1 === value2 // всегда true
  40. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random() * 6)])
  41. var value3 = saver2()
  42. var value4 = saver2()
  43. value3 === value4 // тоже должно быть true
  44. let namePrompt = prompt.bind(window, 'Как тебя зовут?')
  45. let nameSaver = makeSaver(namePrompt)
  46. alert(`Привет! Prompt еще не было!`)
  47. alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
  48. alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
  49. //Final Countdown
  50. (function (sec = 0) {
  51. for (let a = 5; a >= 0; a--) {
  52. setTimeout(() => {
  53. if (a) {
  54. console.log(a)
  55. }
  56. else {
  57. console.log("Поехали!")
  58. }
  59. }, (sec++) * 1000)
  60. }
  61. })();
  62. </script>
  63. </body>
  64. </html>