main.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /* function makeProfileTimer() {
  2. let time = performance.now();
  3. console.log(`${time} in milisec`);
  4. return time;
  5. // console.time('test of speed');
  6. // let time = performance.now();
  7. // console.log(`${time} in milisec`);
  8. // console.timeEnd('test of speed');
  9. // return time;
  10. }
  11. let timer = makeProfileTimer();
  12. alert('Замеряем время работы этого alert');
  13. let timer2 = makeProfileTimer();
  14. alert(timer2 - timer);
  15. */
  16. function makeSaver(x){
  17. let called = true;
  18. let number;
  19. return function a (){
  20. if(called){
  21. number = x();
  22. called = false;
  23. }
  24. return number;
  25. }
  26. }
  27. let saver = makeSaver(Math.random);
  28. let value1 = saver();
  29. let value2 = saver();
  30. console.log(value1);
  31. console.log(value2);
  32. console.log(value1 === value2);
  33. var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random()*6)])
  34. var value3 = saver2()
  35. var value4 = saver2()
  36. console.log(value3 === value4);
  37. let namePrompt = prompt.bind(window, 'Как тебя зовут?')
  38. let nameSaver = makeSaver(namePrompt)
  39. alert(`Привет! Prompt еще не было!`)
  40. alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
  41. alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
  42. /*
  43. (function(seconds) {
  44. let counter = seconds;
  45. setTimeout(function countDown(){
  46. if(counter >= 1 ){
  47. console.log(`${counter} // pause 1 sec`);
  48. setTimeout(countDown,1000);
  49. }
  50. if (counter <= 0) {
  51. console.log("GOOOOOOOOOOOOOOOOOO DRINK BEER BRATAN");
  52. clearTimeout(counter);
  53. }
  54. counter--;
  55. },1000);
  56. })(5); */
  57. /* function myBind (fn,context, bindedparams){
  58. console.log(bindedparams);
  59. return function(...params){
  60. let combinedparams = [...bindedparams];
  61. for(let i =0; i < params.length;i++){
  62. combinedparams.splice(combinedparams.indexOf(undefined),1,params[i]);
  63. }
  64. console.log(combinedparams);
  65. return fn.apply(context, combinedparams);
  66. }
  67. }
  68. // works
  69. let pow5 = myBind(Math.pow,Math,[undefined,5]);
  70. console.log(pow5(2));
  71. var cube = myBind(Math.pow, Math, [undefined, 3]);
  72. console.log(cube(3));
  73. //works
  74. var chessMin = myBind(Math.min, Math, [undefined, 4, undefined, 5,undefined, 8,undefined, 9])
  75. console.log(chessMin(-1,-5,3,15));
  76. console.log(myBind((...params) => params.join(''), null, [undefined, 'b', undefined, undefined, 'e', 'f'])('a','c','d') === 'abcdef') */