前端中容易遗忘的小知识点(1)

01函数节流

①什么是函数节流?

某些代码不可以在没有间断的情况连续重复执行

②为什么要实现函数节流?

防止用户随意操作,导致程序运行缓慢(DOM操作比起非DOM交互,需要更多的内存和CPU时间,连续尝试过多的DOM操作可能会导致浏览器挂起,甚至崩溃)

③如何实现函数节流?

使用单词定时器可以实现函数节流(第一次调用函数,创建一个定时器,在指定的时间间隔后运行代码;当第二次调用该函数的时候,它会清除前一次的定时器并设置另外一个)
前端中容易遗忘的小知识点(1)

02事件委托

①什么是事件委托?

事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作;

【什么是事件冒泡?

1.事件冒泡,就是元素自身的事件被触发后,如果父元素有相同的事件,如onclick事件,那么元素本身的触发状态就会传递,也就是冒到父元素,父元素的相同事件也会一级一级根据嵌套关系向外触发,直到document/window,冒泡过程结束。】

【如何阻止事件冒泡?

1.防止冒泡和捕获:e.stopPropagation();

2.取消默认事件:e.preventDefault();

3.阻止冒泡:return false】

②为什么要事件委托?

1.事件委托首先可以极大减少事件绑定次数,提高性能;

2.其次可以让新加入的子元素也可以拥有相同的操作。

③如何实现事件委托?

前端中容易遗忘的小知识点(1)
如果使用被注释掉的for循环里的代码(16~20行),只能删除原来已有的标签,却不能删除后面添加的标签

03作用域和作用域链

作用域:在js中只有函数的作用域,有了es6以后,可以有块级作用域的概念;

作用域链:使用变量的时候,会首先向上寻找距离该变量最近的作用域。如果有对应的变量,直接使用,否则向上寻找

前端中容易遗忘的小知识点(1)

04变量在内存中的存储

基本数据类型:在内存中以值得形式存储【栈】

复合类型对象:地址的形式存储 【栈–>堆(地址)】

前端中容易遗忘的小知识点(1)
前端中容易遗忘的小知识点(1)