美文网首页
JavaScript中的作用域及作用域链的意义和解释

JavaScript中的作用域及作用域链的意义和解释

作者: 蓝鸥科技 | 来源:发表于2016-11-16 16:36 被阅读34次

一.作用域

简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。

在JavaScript中,变量的作用域有:

1.局部作用域

和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域

2.全局作用域

在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:

3.JavaScript的作用域链

解释:1.alert(a)中的a首先在test1函数里面去找,看有没有定义a这个变量,找到,就使用其中的定义的变量a;
2.如果没找到,则会继续在test中去找,有就使用;
3.如果还是没找到,就会继续向上找(全局对象)查找是否定义了a,找到了就使用.

作用域链定义

作用域链:JavaScript需要查询一个变量x时,首先会查找作用域链的第一个对象,如果以第一个对象没有定义x变量,JavaScript会继续查找有没有定义x变量,如果第二个对象没有定义则会继续查找,以此类推。
上面的代码涉及到了三个作用域链对象,依次是:test1、test、window。
*/

2、函数体内部,局部变量的优先级比同名的全局变量高。

3、JavaScript没有块级作用域。

4、函数中声明的变量在整个函数中都有定义。

这是由于在函数test6内局部变量x在整个函数体内都有定义( var a7= 10000,进行了声明),所以在整个test6函数体内隐藏了同名的全局变量a7。这里之所以会弹出’undefined’是因为,第一个执行alert(x)时,局部变量x仍未被初始化。

5、未使用var关键字定义的变量都是全局变量。

6、全局变量都是window对象的属性

相关文章

  • javascript基础知识问答-作用域和闭包

    1.理解词法作用域和动态作用域2.理解JavaScript的作用域和作用域链3.理解JavaScript的执行上下...

  • 2018-04-11

    JavaScript作用域链浅析 1、作用域 作用域指的是变量存在的范围。在ES5规范中,JavaScript只有...

  • 作用域和闭包

    一、理解 JavaScript 的作用域、作用域链和内部原理 作用域 javascript 拥有一套设计良好的规则...

  • JavaScript中的作用域及作用域链的意义和解释

    一.作用域 简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 在JavaS...

  • JS_0: 执行环境和作用域链

    JavaScript,目前对于执行环境和作用域链的理解 什么是作用域链? 要讲作用域链就得先讲执行环境。 每个函数...

  • 闭包的实现原理

    作用域和作用域链 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 全局变量 变量在函数外定...

  • JavaScript作用域学习笔记

    作用域链 作用域的原理: ”JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.”...

  • 作用域和执行上下文环境的关系

    非官方解释: 作用域: Javascript中,有全局作用域,当然除了这个,还有函数创建的作用域;只要函数创建了,...

  • JavaScript 函数闭包(colsure)

    理解闭包,你首先必须理解JS的变量作用域,JavaScript作用域和作用域链。 ES6之前,变量的作用域分为全局...

  • 成长(4/2000)——面试题合集1

    Javascript 1.作用域 概念: 作用域分全局作用域和函数作用域 预编译 js的两个阶段,预编译和解释执行...

网友评论

      本文标题:JavaScript中的作用域及作用域链的意义和解释

      本文链接:https://www.haomeiwen.com/subject/fmerpttx.html