index.html 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Замыкание</title>
  6. </head>
  7. <body>
  8. <script>
  9. //---------makeProfileTimer
  10. /*function makeProfileTimer(){
  11. let time1=performance.now();
  12. return function(){
  13. let time2=performance.now();
  14. alert(time2-time1);
  15. }
  16. }
  17. function fib(n){
  18. if(n==1||n==2){
  19. return 1;
  20. }else{
  21. return fib(n-1)+fib(n-2);
  22. }
  23. }
  24. var timer=makeProfileTimer();
  25. alert(fib(10));
  26. timer();*/
  27. //-----------makeSaver
  28. /*function makeSaver(fn){
  29. let x=fn();
  30. return function(){
  31. return x;
  32. }
  33. }
  34. var saver = makeSaver(Math.random);
  35. var value1 = saver();
  36. var value2 = saver();
  37. console.log(value1+" "+value2);
  38. console.log(value1 === value2);
  39. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)]);
  40. var value3 = saver2();
  41. var value4 = saver2();
  42. console.log(value3 === value4);*/
  43. //-----------Final Countdown
  44. /*(function count(){
  45. let x=5;
  46. let y=setInterval(function(){
  47. console.log(x);
  48. if(x==1){
  49. console.log('поехали');
  50. clearInterval(y);
  51. }
  52. x--;
  53. },1000)
  54. })();*/
  55. //------------myBind
  56. function myBind(fn,context,args){
  57. return function(){
  58. let args2=Object.assign(args,arguments);
  59. return fn.call(context,...args2);
  60. }
  61. }
  62. var pow5 = myBind(Math.pow, Math, [undefined, 5]);
  63. var cube = myBind(Math.pow, Math, [undefined, 3]);
  64. console.log(pow5(2)); //32
  65. console.log(cube(3)); //27
  66. var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9]);
  67. console.log(chessMin(-1,-5,3,15));
  68. var zeroPrompt = myBind(prompt, window, [undefined, "0"]);
  69. var someNumber = zeroPrompt("Введите число");
  70. console.log(someNumber);
  71. console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef');
  72. </script>
  73. </body>
  74. </html>