美文网首页
JS作用域链

JS作用域链

作者: JessWang | 来源:发表于2018-07-05 18:34 被阅读23次

1. 作用域链

        变量在当前环境now、内部环境f1,内部深层环境f2/f3...都起作用的现象形成了一个链条,这个链条就成为变量的"作用域链"

2. 作用域链的作用

    2.1 变量必须"先声明,后使用"

        函数可以"先使用,后声明",原因是函数有预加载的过程(函数声明先于其他执行代码进入内存).本质还是函数声明在前,使用在后.

    2.2 内部环境变量可以访问外部环境的变量,反之不然.

       环境: 每一个函数内部都是一个环境,最外边是全局环境.

        类型: 函数环境、全局环境

    2.3 变量的作用域是声明时觉得的,而不是运行时

3. AO活动对象 

    Active Object 活动对象(抽象的)

    执行环境:

        js代码执行是有环境的(全局环境,函数内部环境)

        该环境定义了其有权访问的其他数据

        环境有一个与之关联的"活动对象AO"

        环境中所以的变量和函数都是活动对象AO的属性

        全局环境是最外围的执行环境,活动对象是window对象

        执行环境中的代码执行完毕后就被销毁

4. 变量的类型及优先 

    执行环节可以访问变量的类型及优先顺序

    内部变量>>>内部函数>>>形参>>>外部变量(函数,形参);

5. 重新认识一下全局变量和局部变量

    5.1 全局变量

        声明:

            1. 在函数外部声明的变量

            2. 在函数内部不使用var声明的变量(前提是函数执行之后才起作用)

        全局变量 是活动对象window的成员信息

        在访问的时候,window是否设置都可以,如果设置window可以提高代码的可读性

    5.2 局部变量

        声明:

            在函数内部通过var声明的变量就是局部变量

        重新认识:

            局部变量  相对概念上看,在一定范围内可以看做是"全局变量".其在本环境,内部环境,内部深层环境都可以被访问。

    6.闭包

          1.  闭包就是一个函数,两个函数彼此嵌套,内部函数就是闭包,形成闭包条件是内部函数需要通过return给返回出来.

            2.闭包使用规则

                同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的,而且每个闭包函数都可以保存自己个性化的信息

            3.闭包案例

                3.1 闭包生成数组元素

失败案例 成功案例

                4.2 闭包事件操作

                        这种写法必须使用this.style,如果使用lis[I].style会报错,因为for循环执行会导致所有的function访问的都是同一个i变量,而i变量有多个,所有lis[i]获取不到标签元素,因此会报错.如果要使用lis[i].style这种方式去进行操作,需要我们使用闭包来进行操作.闭包的特点是保证闭包函数内的信息是独立的,非常符合这种情况

使用闭包前的写法 使用闭包后的写法

相关文章

  • 干货!月薪80k前端大佬面试笔记:JS闭包解析!

    三点注意事项 JS没有块级作用域,只有全局作用域和局部作用域(函数作用域)。 JS中的作用域链,内部的作用域可以访...

  • JS 作用域链、导入导出

    1. JS 的作用域链 作用域在 JS 中表示变量的可访问性和可见性。JS 作用域有 3 种:1. 全局作用域;2...

  • 闭包

    一、理解闭包前js基础1、作用域链(作用域、作用域链中有说)。2、js的内存回收机制。一个函数在执行开始的时候,会...

  • 作用域和作用链

    关键词:作用域作用链 作用域 js中没有块级作用域 全局作用域,函数作用域太简单,就不演示(≧▽≦)/啦啦啦 作用...

  • 2018-12-18

    JS高级 作用域&作用域链 作用域: 1.作用域的个数:n(函数声明的个数)+1(全局作用域)2.作用域不会存储变...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • JS博客

    JS构造函数及new运算符 JS原型对象和原型链 函数作用域和作用域链 干货分享:让你分分钟学会JS闭包 深入理解...

  • JS进阶系列

    在JS入门难点解析系列中,我们对JS的一些重要概念,比如:作用域,作用域链,原型,原型链,继承,活动对象,this...

  • js 作用域链 和 原型链

    作用域链 js拥有全局作用域(window)、函数作用域、块级作用域(es6)。块级作用域是es6开始才拥有的,因...

  • JavaScript 函数闭包(colsure)

    理解闭包,你首先必须理解JS的变量作用域,JavaScript作用域和作用域链。 ES6之前,变量的作用域分为全局...

网友评论

      本文标题:JS作用域链

      本文链接:https://www.haomeiwen.com/subject/stdyuftx.html