CSDN话题挑战赛第2期
参赛话题:学习笔记
️ NodeJS专栏:Node.js从入门到精通
️ 博主的前端之路:前端之行,任重道远(来自大三学长的万字自述)
个人社区:海底烧烤店ai(从前端到全栈)
个人简介:即将大三的学生,一个不甘平庸的平凡人
你的一键三连是我更新的最大动力❤️!
分享博主自用牛客网:一个非常全面的面试刷题求职网站,点击跳转
文章目录
- 前言
- 一、计时器
- 二、流程控制
- 三、闭包应用
- 四、arguments剩余参数
- 五、二次封装函数
- 结语
前言
最近博主一直在牛客网刷题巩固基础知识,牛客网不仅具有公司真题、专项练习、面试题库、在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!
牛客网里的题库非常全面的,无论你是前端还是后端,是想要备考还是准备面试又或者是想要提高自己,你都能在牛客网上找到适合自己的题,赶快点击链接去注册登录吧:点我进入牛客网
牛客网 | 牛客网 |
---|---|
本篇文章所有示例来自于牛客网题库/在线编程/JS篇
,这些都是前端开发中常用的功能,借此记录一下刷题过程,巩固基础!
一、计时器
实现一个打点计时器,要求:
1、从 start
到 end
(包含 start
和 end
),每隔 100 毫秒 console.log
一个数字,每次数字增幅为 1
2、返回的对象中需要包含一个 cancel
方法,用于停止定时操作
3、第一个数需要立即输出
function count(start, end) { console.log(start++); let timer = setInterval(() => { if (start <= end) { console.log(start++); } }, 100); return { cancel: () => { 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
这就是简单的分支判断:
function fizzBuzz(num) { if (!num || typeof num !== "number") return false; if (num % 3 === 0 && num % 5 === 0) return "fizzbuzz"; if (num % 3 === 0) return "fizz"; if (num % 5 === 0) return "buzz"; return num;}
三、闭包应用
实现函数 makeClosures
,调用之后满足如下条件:
1、返回一个函数数组 result
,长度与 arr
相同
2、运行 result
中第 i
个函数,即 result[i]()
,结果与 fn(arr[i])
相同
示例:
var arr = [1, 2, 3];var fn = function (x) { return x * x;};var result = makeClosures(arr, fn);result[1]() === fn(arr[1]) " />牛客网的JS
题库非常贴合实际的,在写的过程中自己查漏补缺,收获了很多,强烈将牛客网推荐给大家!
如果本篇文章对你有所帮助,还请客官一件四连!❤️
基础不牢,地动山摇! 快来和博主一起来牛客网刷题巩固基础知识吧!