图解Javascript——作用域、作用域链、闭包

什么是作用域?

       作用域是一种规则,在代码编译阶段就确定了,规定了变量与函数的可被访问的范围。全局变量拥有全局作用域,局部变量则拥有局部作用域。 js是一种没有块级作用域的语言(包括if、for等语句的花括号代码块或者单独的花括号代码块都不能形成一个局部作用域),所以js的局部作用域的形成有且只有函数的花括号内定义的代码块形成的,既函数作用域。

 

什么是作用域链?

       作用域链是作用域规则的实现,通过作用域链的实现,变量在它的作用域内可被访问,函数在它的作用域内可被调用。

作用域链是一个只能单向访问的链表,这个链表上的每个节点就是执行上下文的变量对象(代码执行时就是活动对象),单向链表的头部(可被第一个访问的节点)始终都是当前正在被调用执行的函数的变量对象(活动对象),尾部始终是全局活动对象。

 

作用域链的形成?

       我们从一段代码的执行来看作用域链的形成过程。

1 function fun01 () { 2 console.log(\'i am fun01...\'); 3 fun02(); 4 } 5 6 function fun02 () { 7 console.log(\'i am fun02...\'); 8 } 9 10 fun01(); 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgxx.html