js学习纯笔记 | 青训营笔记

36 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

在今天学习js课程中,我最最受益的一句话便是“能用CSS解决绝对不用js”了

对亮暗两色色的方案调整

在我第一天的笔记中我就说了我我的实现思路,就是使用js动态切换类名,但是我没想到还有更简单的方法,单选框的checked伪类选择器。

在根元素前面加一个兄弟元素单选框,使用label标签的for指向该单选框, input .root{} input:checked .root{} 我们在正常情况下定义的是亮色主题,那么就在:zhecked中定义暗色下的主题,这样我们都不只需要一个类名就可以实现l。

但是我又想了下,使用这种方法我们只能定义两种主题色,但是如果在有三色、多色的情况下就行不通了。所以还是按需选择吧。

讲了几种高阶函数

防抖

防抖就是事件被触发一定时间后再执行回调,如果在这段时间里又被触发,则重新开始计时,(比如说在输入框输入,如果你在输入一个字后在1秒内都没有输入字了,那么就会自动搜索;但如果你输入两个字的间隔小于1s,浏览器就不会在你输入第一个字后立刻搜索)

    想要实现防抖只需要定义一个计时器,计时器结束时执行需要的代码,但是一旦检测到用户输入了,就清除上一个计时器,重开一个,这样就又从0开始了
    

节流

节流是在一定时间内只执行一次函数(你就想一想游戏里的技能,是不是使用完技能后需要等待一定时间,在这期间你是无法再次使用的)

    节流的实现依旧是基于计时器,不过就需要在计时器外部设置一个变量(节流阀)来存储状态,用户一操作,先判断变量是不是真,为真,立即执行函数,并且设置变量为假,再开启计时器,在计时器结束时,回调函数把变量改为真。
    

consumer

延时调用,(点击按钮10次,但不是一下全部执行,而是每个1s执行一个)

几种算法

算法这不是太懂,有的的用了位运算(有个切西瓜算法),我还是先搞懂基础吧,暂时不深究了

两个概念

命令式编程和声明式

命令式:按步骤一步一步来 声明式:比较抽象,只要结果