理解作用域与闭包

作用域:

作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期。

在JavaScript中变量的作用域有:全局作用域和局部作用域。

全局作用域:任何函数的内部都可以访问的到。

局部作用域:只能在函数内部访问。

作用域链:

作用域链是一个对象列表,用来检索各个变量对象中的变量和函数,这样可以保证执行环境有权访问哪些变量和函数。

匿名函数:(function () {}) ()

变量提升:

举例:var a = 2;我们习惯将var a = 2;看做是一个声明,而实际上javascript引擎并不这么认为。它将var a和a = 2看做是两个单独的声明,第一个是编译阶段的任务,而第二个则是执行阶段的任务。

这意味着无论作用域中的声明出现在什么地方,都将在代码本身被执行前首先进行处理,可以将这个过程形象地想象成所有的声明(变量和函数)都会被“移动”到各自作用域的最顶端,这个过程被称为提升。

闭包的特征: 

1.局部变量:在函数中定义有共享意义的局部变量(定义成全局变量会造成全局污染);

2.内嵌函数:在函数中申明有内嵌函数,内嵌函数对函数中的局部变量进行访问;

3.外部使用:函数向外返回此内嵌函数,外部可通过此内嵌函数持有并访问申明在函数中的局部变量,而此变量在外部是通过其他路径无法访问的;

闭包:形式函数中套了一个函数,内层函数可以访问外层函数中的局部数据。

this绑定规则:默认绑定,隐式绑定,显式绑定,new绑定。

this绑定优先级:new绑定,显式绑定,隐式绑定,默认绑定。

this指向:

情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window(这里需要说明的是在js的严格版中this指向的不是window)。

情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。

情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

情况4:this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调用的。(举例var j = o.b.fn;执行的是j()所以指向的是window,执行o.b.fn();指向情况3)。

语言类型:string,number,boolean,null,undefined,object。

内置对象:String,Number,Boolean,Object,Function,Array,Date,RexExp,Error。

:类意味着复制。传统的类被实例化时,他的行为被复制到实例中,类被继承时,行为也会复制到子类中。

多态:(在继承链的不同层次名称相同但是功能不同的函数)看起来是从子类引用到父类,但本质上引用的其实是复制的结果。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值