笔记整理

作用域与执行上下文:
区别1:*全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了,而不是在函数调用时
*全局执行上下文环境是在全局作用域确定之后,js代码马上执行之前创建
*函数执行上下文是在调用函数时,函数体代码执行之前创建
**区别2:***作用域是静态的,只要函数定义好了就一直存在,且不会变化
*执行上下文环境是动态的,调用函数时创建,函数调用结束时上下文环境就会自动释放
**联系:***执行上下文环境(对象)是从属于所在的作用域
*全局执行上下文环境==>全局作用域
*函数执行上下文作用域==>对应函数的使用域

闭包
当一个嵌套的内部函数(子函数)引用了嵌套外部函数(父函数)的变量时,就产生了闭包
闭包的作用:使用函数内部的变量在函数执行完后,任然存活在内存中(延长了局部变量的生命周期)
让函数外部可以操作到函数内部的数据(变量或函数)
函数执行完后,函数内部声明的局部变量是否存在?
一般是不存在,但是存于闭包中的变量可能存在

在函数内部的局部变量能通过闭包来让外部操作它

闭包产生和死亡:在嵌套内部函数定义执行完就产生,在嵌套内部函数对象成为垃圾对象时死亡。

闭包的缺点
*函数执行完后,函数内的局部变量没有释放,占用内存时间会变长
*容易造成内存泄漏
解决:能不用就不用、及时释放。

内存溢出:当程序运行需要的内存超过剩余的内存,就会抛出内存溢出
内存泄漏:占用的内存没有及时释放,内存泄漏积累多了就会造成内存溢出(常见的内存泄漏有:意外的全局变量、没有及时清理的计时器或回调函数、闭包)

工厂函数:返回一个对象的函数

原型链继承:将子类型的原型为父类型的一个实例(Kid.prototype=new Father() Kid.prototype.constructor=Kid)

进程与线程

进程:程序的一次执行,占有一个独有的内存空间
线程:是进程内的一个独立执行单元,是程序执行的一个完整流程
应用程序必须运行在某个进程的某个线程上
*一个进程中至少有一个运行的线程:主线程,进程启动后自动创建
*一个进程中可以同时运行多个线程,程序多线程运行
*一个进程内的数据可以供其中的多个线程直接共享
*多个进程之间的数据不能直接共享
*线程池:保存多个线程对象的容器,实现线程对象的反复利用
*多进程:一个应用程序可以同时启动多个进程运行
*多线程:在一个进程内,同时有多个线程运行
*单线程与多线程: (js是单线程运行的,使用H5中的web workers可以多线程运行)
多线程优点:提高cpu效率 缺点:创建多线程开销、线程间切换开销、死锁与状态同步
单线程优点 :顺序编码简单易懂 缺点:效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值