JavaScript中的作用域、作用域链、变量声明提升

变量的声明提升:就是把变量的声明提升到当前作用域的最前面

函数的声明提升:就是把整个函数提升到当前作用域的最前面(位于前置的变量声明后面)

Javascript中的作用域及作用域链

执行环境:定义了变量或者函数有权访问的其他的数据,决定了他们各自的行为

变量的作用域就是变量和函数的可访问范围,或者说变量或函数起作用的区域(全局作用域,函数作用域即局部作用域)

1.javascript函数的作用域:

函数内的区域,就是这个函数的作用域,变量和函数在这个区域都可以访问操作。最外层函数外的区域叫全局作用域,函数内的区域叫局部作用域。

2.javascript变量的作用域:

在源代码中变量所在的区域,就是这个变量的作用域,变量在这个区域内可以被访问操作。在全局作用域上定义的变量叫全局变量,在函数内定义的变量叫局部变量

简单地理解,JS源代码被函数{ }划分成一块一块的区域,这些区域换个身份就是某函数或某变量的作用域,变量的作用域和函数的作用域在源代码中有可能指的是同一块区域。

作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链。

作用域链的用途:保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象作为变量对象。活动对象在最开始的时候只包含一个变量,即arguments对象。作用域链中的下一个变量对象来自包含(外部)环境,则在下一个变量对象则来自下一个包含环境,这样一直延续到全局执行环境;全局执行环境的变量对象始终都是作用域链中的最后一个对象。

详细讲解JavaScript中的作用域与作用域链

你可能感兴趣的:(JavaScript,javascript)