理解作用域链

JavaScript代码在执行的过程中,需要依赖其执行上下文(Execution Context), 当JavaScript代码被浏览器载入后,默认最先进入一个全局执行上下文,当在全局上下文中调用执行一个函数时,程序流就进入该被调用函数内,此时引擎就会为该函数创建一个新的执行上下文,并且将其压入到执行上下文堆栈的顶部。浏览器总是执行当前在堆栈顶部的上下文,一旦执行完毕,该上下文就会从堆栈顶部被弹出,然后,进入其下的上下文执行代码。这样,堆栈中的上下文就会被依次执行并且弹出堆栈,直到回到全局的上下文。

关于执行上下文(Execution Context) 可以将执行上下文,理解成为一个Object。它主要包含三个属性 变量对象,this 指向 和作用域链。

变量对象包括 函数的形参,函数声明和变量声明

作用域链(scope chain) 其实作用域链类似于原型链,像一条锁链将作用域关联起来,如果这个变量在当前作用域中没有,它会寻找父级的,直到最顶层,如果没有找到就会报错。

参考地址: https://leohxj.gitbooks.io/front-end-database/content/javascript-advance/scope-chain.html http://blog.rainy.im/2015/07/04/scope-chain-and-prototype-chain-in-js/

你可能感兴趣的:(理解作用域链)