作用域、闭包、this指针、异步和单线宏任务微任务

一、作用域

作用域分为局部作用域和全局作用域,局部作用域又分为块级作用域(let、const)和函数作用域

作用域链:

 在函数作用域中,变量向上级一层一层查找,直到找到为止,最高查找到全局作用域就形成了作用域链

二、闭包

1、如何形成:

函数嵌套函数,函数内部可以访问函数外部的变量、函数作为参数被传递;函数作为返回值被返回

2、优点

  1. 防止数据被外部污染
  2. 变量持久化

3、缺点

  1.  需手动清除,否则会一直存在,造成内存泄露,影响性能

三、this指向 

1.全局调用 this指向window

2.对象内的⽅法调用 obj.sing() this指向调⽤对象

3.构造函数调用 new Person() this指向实例对象

4.事件处理函数调用 this指向触发事件的dom元素

5 箭头函数的绑定 (没有this) 如果写this, this指向他的上级

如何改变this指向?

call、apply、bind(手动调用),规则一样,参数不一样,语法不同

四、 垃圾回收机制和内存泄漏

1、垃圾回收机制

    js中内存的分配和回收都是自动完成的,内存在不使用的时候会被垃圾回收机制自动回收 

   内存的生命周期:内存分配、内存使用、内存回收

   有两种实现算法: 引用计数法 标记清除法

2、内存泄漏

   内存泄漏:程序中分配的内存由于某种原因程序未释放或无法释放 叫做内存泄漏

   js中(循环引用、闭包、DOM泄露、 Timers计(定)时器泄露)

五、异步和单线宏任务微任务

js是一门异步单线程语言,自上而下执行,报错就停止,遵循同步优先执行异步在同步执行完毕以后再执行

js内的异步方法:ajax、settimeout、setinterval、promise、async、await

异步宏任务:浏览器、script、ajax、settimeout、setinterval

异步微任务:promise、async、await

 先执行微任务再执行宏任务

注意:实例化promise是同步编程(new Promise)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值