作用域及作用域链,闭包

作用域:指变量或者方法的作用范围

作用域链:程序在执行的时候系统会创建一个环境栈,首先压入栈底的是全局环境,同时也会给它创建一个变量对象,管理这个全局环境中的变量.当调用某个函数的时候,这个函数就会被压入环境栈,同时也会给它创建一个变量对象.系统会把这些变量对象链接起来,开头永远都是正在执行的函数,结尾是去全局环境.

一、变量的作用域
01 局部变量与全局变量
局部变量 声明在函数体内  作用域函数体内     形参
全局变量 声明在函数体外  作用域整个页面中  在函数体不加var关键字
在函数体中当局部变量与全局变量重名的时候,局部变量起作用;当想使用全局变量时,使用window.变量名


02 声明提升
  当执行函数的时候,会先准备工作,会先将本函数体中声明的局部变量,提前声明了。

  01 当执行script标签时,先把全局变量与单独定义的函数的声明给执行了,然后在去逐行的执行script标签之间的代码
  02 当执行函数的时候,先把该函数中的局部变量与内部函数的声明给执行了,然后在区逐行执行函数体的代码

03 作用域链【面试重点】
作用链是有方向的,是从内到外的
二、匿名函数
01 什么是匿名函数
没有名字的函数
02 怎么调用匿名函数


03 匿名函数的作用
(1)模拟块级作用域
(2)解决团队开发命名冲突的问题
匿名函数+命名空间


三、闭包
01 什么闭包?
使用了外部函数的局部变量的内部函数,并且该内部函数被返回到外部函数的函数体外,那么这个内部函数就是闭包。
【判断是否是闭包】
(1) 内部函数;
(2)内部函数中使用了外部函数的局部变量;
(3)内部函数被返回到了外部函数体外。
【结论】闭包是链接函数内部与外部的桥梁。
留意定时器,有时候它也是闭包.
定时器被window调用了,它的值也就被传出去了.
02 闭包的优缺点
【优点】避免污染全局变量,可以让局部变量长时间的驻留在内存中。在函数体外可以使用函数体内的局部变量;
【缺点】变量长时间驻留在内存中,造成内存的浪费。所以使用闭包需谨慎。
03 闭包的使用
01 DOM操作--- 通过循环的方式给元素添加响应函数
02 使用定时器时,需要给定时器的函数传参,但是传参只有在调用函数的时候才可以传参。我们就可以把定时器的函数变成闭包,给他的外部函数传参。

03 封装常量

4 .在IE8下添加点击事件





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值