函数执行形成一个私有的作用域(保护私有变量),进入到私有作用域中,首先变量提升(声明过的变量是私有的) ...
分类:
Web程序 时间:
2018-10-28 16:10:50
阅读次数:
190
闭包这个东西确实好用,理解他对学习JavaScript确实很有帮助。 闭包的内部细节,依赖于函数被调用过程所发生的一系列事件为基础,所以有必要先弄清楚以下几个概念:1. 执行环境和活动对象、2. 作用域、作用域链。(很重要) 在javascript中,执行环境可以抽象的理解为一个object,它由以 ...
分类:
编程语言 时间:
2018-10-22 20:30:43
阅读次数:
219
闭包: 定义在函数里面的函数 为什么不是输出200,回到上节作用域链的问题,在返回函数中没有a,a为自由变量 则往父级作用域查找a,此处注意 父级作用域是函数定义时所在上下文,而不是执行时所在上下文, 所以找F1中定义的a 1. 闭包使用场景 (1)函数作为返回值,如上图 (2)函数作为参数传递。如 ...
分类:
其他好文 时间:
2018-10-20 00:52:21
阅读次数:
176
1. JS无块级作用域, 只有全局作用域和函数作用域 (ES6之前),但可以模仿块级作用域(使用IIFE) 函数的父级作用域则是函数定义时所在的上下文, 查找某变量时,当前作用域没有,则往父级作用域查找,最高找到全局作用域,形成作用域链 ...
分类:
其他好文 时间:
2018-10-20 00:13:30
阅读次数:
164
复习 Var 是js的关键字,用于声明变量,声明在内存模块完成,定义(=)是在执行模块完成。 Var可以在内存模块提前(js代码执行前)完成所以有变量提升这个功能。 因为a没有带var,所以不存在变量提升,浏览器会把他当成window的属性。 Function也是js的关键字,用于声明和定义函数的, ...
分类:
其他好文 时间:
2018-10-19 13:55:59
阅读次数:
220
也称:词法作用域 JavaScript查找变量关联的值时,会遵循一个查找链,这个链是基于作用域的层次结构的。 如上图,查找过程如下: 1、在func2函数中查找变量a,如果找到了,直接输出值,如果没有找到,转到第2步 2、在func2的父函数 func1函数中继续查找,如果找到了,直接输出值,如果没 ...
分类:
编程语言 时间:
2018-10-14 11:26:13
阅读次数:
134
闭包 是由作用域链引起的。 如上代码: 定义parent函数,返回一个匿名函数,并从全局作用域调用这个返回的匿名函数。 因为匿名函数被定义在parent函数内部,因此,它被调用后仍然能够访问parent函数的作用域。这就是闭包。 ...
分类:
编程语言 时间:
2018-10-14 11:25:33
阅读次数:
140
1、在JS中,作用域就是指 执行代码的上下文。 2、有三种类型的作用域: 全局作用域 局部作用域(也称为“函数作用域”) eval作用域 3、在全局作用域中定义的变量,从任何地方都可以访问,因为它是作用域链中最高层(最后一个)。它的生命周期将跨越整个程序。在JavaScript中没有使用 var 关 ...
分类:
编程语言 时间:
2018-10-14 00:13:42
阅读次数:
174
执行环境 所有变量(基本类型、引用类型以及函数)都存在于一个执行环境当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。 每个执行环境都有一个与之关联的 变量对象 ,环境中定义的所有变量和函数都保存在这个对象中。 执行环境可以划分为两类: 全局执行环境 全局执行环境是最外围的 ...
分类:
编程语言 时间:
2018-10-11 01:53:20
阅读次数:
303
函数嵌套: #指在第二个函数里面调用第一个函数的结果 def func(): print('sss') def func1(f): f() func1(func) 作用域链: #最内层的函数可以调用并且更改其他函数内的代码变量但是只限制于函数这个作用域内的变量 全局的变量不能被内部函数调用 否则会报 ...
分类:
其他好文 时间:
2018-10-07 16:51:13
阅读次数:
129