123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- {
-
- }
- {
-
- }
- {
- function makeProfileTimer() {
- const start = performance.now()
- function endTime() {
- return performance.now() - start
- }
- return endTime
- }
-
- var timer = makeProfileTimer()
- alert('Замеряем время работы этого alert')
- alert(`Время выполнения кода: ${Math.round(timer())} мс`)
- }
- {
- function makeSaver(func) {
- const start = func()
- function saver() {
- return start
- }
- return saver
- }
-
- var saver = makeSaver(Math.random)
- var value1 = saver()
- var value2 = saver()
- value1 === value2
- var saver2 = makeSaver(() => console.log('saved function called') || [null, undefined, false, '', 0, Math.random()][Math.ceil(Math.random() * 6)])
- var value3 = saver2()
- var value4 = saver2()
- value3 === value4
-
- let namePrompt = prompt.bind(window, 'Как тебя зовут?')
- let nameSaver = makeSaver(namePrompt)
- alert(`Привет! Prompt еще не было!`)
- alert(`Привет ${nameSaver()}. Только что запустился prompt, первый и последний раз`)
- alert(`Слушай, ${nameSaver()}, го пить пиво. Ведь prompt был только один раз`)
- }
- {
- function myBind(func, zis, params) {
- function bind(...addParams) {
- let newParams = [...params]
- for (let i = 0; i < params.length; i++) {
- if (params[i] === undefined) {
- newParams[i] = addParams.shift()
- }
- }
- return func.bind(zis)(...newParams)
- }
- return bind
- }
-
- var pow5 = myBind(Math.pow, Math, [, 5])
-
-
- var cube = myBind(Math.pow, Math, [, 3])
- pow5(2)
- cube(3)
- var chessMin = myBind(Math.min, Math, [, 4, , 5, , 8, , 9])
- chessMin(-1, -5, 3, 15)
- var zeroPrompt = myBind(prompt, window, [undefined, "0"])
-
- var someNumber = zeroPrompt("Введите число")
- const bindedJoiner = myBind((...params) => params.join(''), null, [, 'b', , , 'e', 'f'])
- bindedJoiner('a', 'c', 'd') === 'abcdef'
- bindedJoiner('1', '2', '3') === '1b23ef'
- }
- {
- function checkResult(original, validator) {
- function wrapper(...params) {
- let res = original(...params)
- do {
- res = original.apply(this, params)
- } while (!(validator(res)))
- return res
- }
- return wrapper
- }
-
-
-
- const numberPrompt = checkResult(prompt, x => !isNaN(+x))
- let number = +numberPrompt("Введите число", "0")
-
- const gamePrompt = checkResult(prompt, x => ['камень', 'ножницы', 'бумага'].includes(x.toLowerCase()))
- const turn = gamePrompt("Введите что то из списка: 'камень', 'ножницы', 'бумага'")
-
- const randomHigh = checkResult(Math.random, x => x >= 0.5 && x <= 1 ? true : false)
- console.log(randomHigh())
-
- const alwaysSayYes = checkResult(confirm, x => x)
- alwaysSayYes()
-
-
- const enterPersonData = () => {
- const arr = {}
- const name = (prompt('Ввеедиет Ваше Имя в поле ниже')).trim()
- arr.name = `${name[0].toUpperCase()}${name.slice(1).toLowerCase()}`
- const surname = (prompt('Ввеедиет Вашу Фамилию в поле ниже')).trim()
- arr.surname = `${surname[0].toUpperCase()}${surname.slice(1).toLowerCase()}`
- const fatherName = (prompt('Ввеедиет Ваше Отчество в поле ниже')).trim()
- arr.fatherName = `${fatherName[0].toUpperCase()}${fatherName.slice(1).toLowerCase()}`
- const fullName = `${name[0].toUpperCase()}${name.slice(1).toLowerCase()} ${surname[0].toUpperCase()}${surname.slice(1).toLowerCase()} ${fatherName[0].toUpperCase()}${fatherName.slice(1).toLowerCase()}`
- arr.fullName = fullName
- return arr
- }
- function verification(arr) {
- console.log(arr.name)
- if (arr.name) return true
- if (arr.surname) return false
- if (arr.fatherName) return false
- return false
- }
- const respectMe = checkResult(enterPersonData, verification)
- respectMe()
- }
|