函数作用域,我们可以理解为:就是一块“地盘”,一个代码段所在的区域,他是静态的(相对于执行上下文对象),在编写代码时就确定了。
分类:全局作用域,函数作用域
作用:隔离变量,在不同的作用域下同名变量不会有冲突
除了全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定好的了,而不是在函数调用时确定,跟调用没关系,只有执行上下文才需要调用
作用域链会先从自身开始查找作用域内的变量,有就执行,没有就往上一层作用域链查找,直到顶端为止,如果顶端还是没有就抛出异常。
执行上下文与函数作用域的区别:
作用域是静态的,只要定义好了就一直存在,且不会有变化
执行上下文是动态的,调用函数时创建,函数调用完就会自动释放
两者之间的联系:
上下文环境(对象)是从属于所在的作用域
全局上下文环境 == > 全局作用域
函数上下文环境 ==> 对应的函数使用域

举个冰冻栗子:

var a = 10; // 全局作用域
var b = 20;
function fun(x){    // 局部作用域var a = 100;   var c = 200;console.log("fun"+ a, b, c, x);function bar(x){var a = 1000;d = 300;console.log("bar"+a, b, c, d, x);}bar(20);
}
fun(50);

函数作用域,是定义好了就一直存在的,例如:
function fun(){ var a = 100; var c = 200 }
这个作用域,我写好了,他就存在的了,不需要去调用才生效(函数执行上下文就需要调用后才生效上下文对象)。


图解:对应着全局作用域,fun函数作用域,bar作用域
var a, var b 是全局作用域对象,fun是函数作用域对象,而 bar 则是嵌套在 fun 函数内部的作用域。
bar函数作用域内输出方法有个输出 b,但 bar作用域内没有 b这个变量,就往上一层 fun 作用域内进行查找,再没有就往再上一层,查找直到顶层为止,如果顶层还没有,就抛出异常
他的执行顺序是由内向上,一级一级查找的,值得记住的是,函数内部作用域他可以向上逐级查找,是因为顶层对象(属性,变量)对底层对象可见的,反之顶层对象,不能看到底层对象
说白了就是底层可以逐级查看,调用顶层数据,但顶层(外部)不能看到底层数据。

javascript 全局作用域,函数作用域详解(配图解)相关推荐

  1. javascript 中match函数使用详解

    javascript中的match函数是使用正则表达式对字符串进行查找,并将查找的结果作为数组返回,在实际开发中非常的有用,使用方法如下: stringObj.match(rgExp) 其中strin ...

  2. javaScript函数模块详解

    javaScript函数模块详解 ​ 函数实际上是对象,每个函数都是Function类型的实例,而Function也有属性和方法,和其他引用类型一样 可以将函数名想象成指针,函数想象成对象 ​ 注意, ...

  3. js onscroll android,JavaScript触发onScroll事件的函数节流详解

    问题描述 常见的网站布局,顶部一个导航栏,我们假设本页面共有四个栏目:分别为A.B.C.D,我们点击A,锚点跳转至A栏目,同时顶部的A按钮高亮:点击B,锚点跳转至B栏目,同时顶部的B按钮高亮:我们在M ...

  4. eval 函数 java_[Java教程]eval()函数用法详解

    [Java教程]eval()函数用法详解 0 2015-12-14 11:00:26 eval()函数用法详解: 此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval ...

  5. ajax.request函数使用详解

    ajax.request函数使用详解 Ajax.Request ? Ajax.Request( url, { method:method, parameters:para, postBody:xmlS ...

  6. jQuery.extend 函数使用详解

    jQuery.extend 函数使用详解 一.总结 一句话总结: jquery $.extend的作用就是:用于将一个或多个对象的内容合并到目标对象:$.extend( target [, objec ...

  7. JavaScript数据结构与算法——链表详解(上)

    注:与之前JavaScript数据结构与算法系列博客不同的是,从这篇开始,此系列博客采用es6语法编写,这样在学数据结构的同时还能对ECMAScript6有进一步的认识,如需先了解es6语法请浏览ht ...

  8. JavaScript数据结构与算法——队列详解(下)

    接下来会借助本人另一篇文章JavaScript数据结构与算法--队列详解(上)中实现的队列类及其方法实现一个应用. 配对问题 需求分析:在一个文件中保存着一份男女混合的数据,名称前以B开头表示男士,以 ...

  9. JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用

    1.上篇回顾: 上篇我们实现了一个列表类,并添加了一些属性,实现了比较多的方法,本文章将与大家一起使用列表实现一个图书借阅查询系统.需要使用JavaScript数据结构与算法--列表详解(上)中写好的 ...

  10. java调用js匿名函数参数,js匿名函数作为函数参数详解

    由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...

最新文章

  1. 前端img里面的src能是bmp么_实习|字节跳动前端实习生(非科班已定offer)三技术面+一HR面...
  2. 用canvas实现一个vue弹幕组件
  3. 李彦宏乌镇谈人工智能:百度会很快和雄安宣布一个大的智能城市计划
  4. HDFS的Java客户端操作代码(查看HDFS下的文件是否存在)
  5. MPLS-组网组网方案助连锁餐饮网络升级改造
  6. Android Studio错误代码汇总
  7. Java Review - 并发编程_PriorityBlockingQueue原理源码剖析
  8. 信息系统项目管理师-信息系统项目管理基础考点笔记
  9. thymeleaf 获取yml中的值_SpringBoot引入Thymeleaf
  10. .NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?
  11. 2020十大新消费人群
  12. (200)FPGA芯片选择原则
  13. 运维学python哪部分_初入运维的小伙伴,别再问需不需要学Python了
  14. Q73:蒙特•卡罗积分(Monte Carlo Integration)
  15. 使用C++编程语言保存数据库查询结果的方法
  16. Pascal 转 C++ 教程1
  17. 两台计算机传输文件速度,一根网线,两台电脑,超高速传输文件
  18. 生僻字看不懂很尴尬?知道手机中的这个功能,瞬间发现:太简单
  19. notepad++更换皮肤
  20. 对话 UNIX: 使用 Screen 创建并管理多个 shell

热门文章

  1. OpenCV HSV颜色空间
  2. HBuilder X连接不到手机
  3. 国际版、个人家庭版onedrive如何开账号
  4. mysql 查看连接_MySql如何查看连接数和状态?
  5. 程序员找 替身 面试作弊入职,结果。。
  6. AutoCad二次开发原理
  7. 总线周期与时钟周期的区别与联系
  8. 自动驾驶遥控泊车RPA系统功能规范
  9. watch跟computed的区别
  10. 视频教程-zabbix4.0原理到实战中部(基础架构之四)-Linux