这篇文章主要介绍“JavaScript五个常用功能是什么”,在日常操作中,相信很多人在JavaScript五个常用功能是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript五个常用功能是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!实现一个打点计时器,要求:1、从 start
到 end
(包含 start
和 end
),每隔 100 毫秒 console.log
一个数字,每次数字增幅为 12、返回的对象中需要包含一个 cancel
方法,用于停止定时操作3、第一个数需要立即输出
functioncount(start,end){ console.log(start++); lettimer=setInterval(()=>{ if(start{ clearInterval(timer); }, };}
第一个数立即输出,console.log(start++)
中start++
是先输出再自加1。之后使用setInterval
定时器,count
函数return
出cancel
,cancel
内是一个清除定时器的操作(引用了timer
这个在count
函数中声明的变量),这里用到了闭包的知识。cancel
是一个闭包函数,它能访问count
函数中的变量timer
,这时这个timer
不会被JS
垃圾回收机制清除(会永驻内存,即使count
函数被销毁),这就是可以在外部调用cancel
清除timer
这个定时器的原因。闭包是指有权访问另外一个函数作用域中的局部变量的函数。声明在一个函数中的函数,叫做闭包函数。而且内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。实现 fizzBuzz
函数,参数 num
与返回值的关系如下:
1、如果 num
能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num
能被 3 整除,返回字符串 fizz
3、如果 num
能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number
类型,返回 false
5、其余情况,返回参数 num
示例:
输入:15输出:fizzbuzz
这就是简单的分支判断:
functionfizzBuzz(num){ if(!num||typeofnum!=="number")returnfalse; if(num%3===0&&num%5===0)return"fizzbuzz"; if(num%3===0)return"fizz"; if(num%5===0)return"buzz"; returnnum;}
实现函数 makeClosures
,调用之后满足如下条件:
1、返回一个函数数组 result
,长度与 arr
相同
2、运行 result
中第 i
个函数,即 result[i]()
,结果与 fn(arr[i])
相同示例:
vararr=[1,2,3];varfn=function(x){ returnx*x;};varresult=makeClosures(arr,fn);result[1]()===fn(arr[1])?console.log("yes")===4:console.log("no");//yes
解:
functionmakeClosures(arr,fn){ constresult=[] arr.forEach(item=>{ result.push(function(){ returnfn(item) }) }) returnresult}
这题一眼看上去感觉是比较绕,但你从上到下去梳理就很容易找到解决的方法:makeClosures
返回一个数组数组中每个元素都是一个函数并且这些函数执行的结果要与使用arr
中对应元素作为参数调用fn
的结果一致函数 useArguments
可以接收 1 个及以上的参数。请实现函数 useArguments
,返回所有调用参数相加后的结果。本题的测试参数全部为 Number
类型,不需考虑参数转换。
输入:1,2,3,4输出:10
解:
functionuseArguments(){ return[...arguments].reduce((a,b)=>a+b);}
函数中能直接访问arguments
变量,这个变量是一个含有该函数接收的所有参数的伪数组(不具有数组的全部方法)。所以我是先使用...
解构来将arguments
转换成一个真正的数组,之后调用数组的reduce
求和方法进行求和即可。reduce()
方法对数组中的每个元素按序执行一个由您提供的 reducer
函数,每一次运行 reducer
会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
Array.prototype.reduce(callbackFn,initialValue)
参数:callbackFn
一个 “reducer
” 函数,包含四个参数:previousValue
:上一次调用 callbackFn
时的返回值。在第一次调用时,若指定了初始值 initialValue
,其值则为 initialValue
,否则为数组索引为 0 的元素 array[0]
。currentValue
:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue
,其值则为数组索引为 0 的元素 array[0]
,否则为 array[1]
。currentIndex
:数组中正在处理的元素的索引。若指定了初始值initialVal免费云主机域名ue
,则起始索引号为 0,否则从索引 1 起始。array
:用于遍历的数组。initialValue
可选
作为第一次调用 callback
函数时参数 previousValue
的值。若指定了初始值 initialValue
,则 currentValue
则将使用数组第一个元素;否则 previousValue
将使用数组第一个元素,而 currentValue
将使用数组第二个元素。实现函数 partialUsingArguments
,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result
之后,返回的结果与调用函数 fn
的结果一致
3、fn
的调用参数为 partialUsingArguments
的第一个参数之后的全部参数以及 result
的调用参数解:
functionpartialUsingArguments(fn){ constarr=[].slice.call(arguments,1) returnfunction(...arr2){//...arr2表示用arr2接收所有参数,arr2是一个数组 returnfn(...arr,...arr2) }}
第一个arr
数组表示的是partialUsingArguments
接收的第一个参数之后的全部参数数组。因为arguments
是伪数组,不具有slice
方法,所以这里通过随便一个数组(我选的是空数组[]
)来调用slice
,然后通过call
修改调用的这个slice
的this
指向,使其指向到arguments
,这样就相当于是在arguments
上使用slice
方法。call
修改函数this
指向并立即调用该函数,call
第一个参数表示需要修改的this
指向,之后的所有参数都会作为原函数的参数传递到原函数中。slice(begin,end)
方法能切割数组,返回一个新的数组对象,这一对象是一个由 begin
和 end
决定的原数组的浅拷贝(包括 begin
,不包括end
)。原始数组不会被改变。
不加end
参数表示从 begin
一直切割到最后。到此,关于“JavaScript五个常用功能是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
本篇内容介绍了“HTTP协议的特点和工作原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HTTP超文本传输协议(HyperText Transfer P…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。