For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
作用域是我们在学习JavaScript编程开发的时候需要重点掌握的技术之一,下面我们就一起来了解一下,关于作用域的一些基础知识。希望通过对本文的阅读,大家对于JavaScript编程有更多的了解。
作用域链
函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[scope]],由ECMA-262标准三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。
上面是一段很官方的话,毕竟是官方写的。当然官方说的很对,但有点难理解,下面我就依据上述的内容做补充。
简单的说作用域链就是是由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访问权限的变量和函数的有序访问。
作用域链是一个链表,是一个线性表,也就是说当前作用域和上层作用域并不是包含关系,是一个有方向的链式关系,并且是单向的,前端是起点,末端是终点。所以我们可以沿着这个单向的链表查询变量对象中的标识符,这样也就可以访问到上一层作用域的变量。
作用域
作用域,收集并维护一张所有被声明的标识符(变量)的列表,并对当前执行中的代码如何访问这些变量强制实施了一组严格规则。简单的说就是通过标识符名称查询变量的一组规则,明确定义了如何在某些位置存储变量,以及如何在稍后找到这些变量。
作用域决定了代码区块中的变量和其他资源的可见性。作用域可以理解为是一个独立的地盘,不会让变量外泄、暴露出去。也就是说作用域大的作用就是隔离变量,不同作用域下同名变量不会有冲突。
词法作用域
在编程语言中,作用域分为两种:一种是词法作用域,另一种是动态作用域。JavaScript中作用域是词法作用域,词法作用域也叫做静态作用域,也就是在词法分析的阶段就被定义了,简单的说就是在代码书写的时候就被定义了。而动态作用域是值在代码被执行的时候才决定。
局部作用域
局部作用域是相对全局作用域而言。在代码某一个具体范围内使用使用的变量都可以在局部作用域内定义。
JavaScript中有两种局部作用域:函数作用域和块级作用域。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。