JS作用域和作用域链
作用域(scope):一个变量的可用范围
两种:全局作用域,任何地方都可以访问,反复使用
函数作用域,仅在函数内部可访问,不能重复使用
函数的生命周期
1、开始执行前:
创建执行环境栈(ECS数组):临时保存正在执行的函数的环境
向执行环境栈中加入第一个默认函数main()
创建全局作用域对象window
2、定义函数时:
创建函数对象,封装定义
声明函数名变量,引用函数对象
函数对象的scope属性引用回,创建函数时的作用域
3、调用函数时:
ESC中加入一个新的元素(执行环境),记录新函数调用
创建一个活动对象,保存本次函数调用用到的局部变量
ESC新执行环境元素,引用活动对象
活动对象中的parent属性引用函数的scope指向的父级作用域对象
在执行过程中:优先使用活动对象中的局部变量
局部中没有,才延parent向父级作用域找
4、调用函数后:
执行环境栈中本次函数的执行环境出栈
导致活动对象被释放 导致局部变量一同释放
作用域链:由多级作用域连续引用形成的链式结果
掌管一切变量的使用顺序: 先在局部找,没有,就延作用域向父级作用域找
转载于:https://www.cnblogs.com/yeming980912/p/10928207.html
JS作用域和作用域链相关推荐
- js作用域及作用域链概念理解及使用
之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论都在说了解了作用域链和活动对象才能真正理解闭包,起初不以为然,后来在跟公司同事交流的时 ...
- js 闭包作用域和作用域链_Java:伪造工厂的闭包以创建域对象
js 闭包作用域和作用域链 最近,我们想创建一个域对象,该对象需要具有外部依赖关系才能进行计算,并且希望能够在测试中解决该依赖关系. 最初,我们只是在领域类中引入依赖关系,但这使得无法在测试中控制其值 ...
- Js中的作用域和作用域链
Js中的作用域和作用域链 前言 阅读本文,请先阅读:Js中的函数相关:创建函数的三种方式.函数的形参和实参.返回值.return.break.continue的区别.重载和arguments.匿名函数 ...
- JS进阶学习(作用域、函数进阶、解构赋值、原型链)
文章目录 1.面相对象编程介绍 2.ES6中的类和对象 3.类的继承 ES6中的类和对象 三个注意点 作用域 局部作用域 全局作用域 作用域链 JS垃圾回收机制(GC) JS垃圾回收机制-算法说明 闭 ...
- 详解JS 作用域与作用域链
作用域和作用域链方面的知识是JS的重点,去面试十个有八个都会问你这块的知识,所以说这块是特别特别的重要,下面我们好好理解一下作用域和作用域链到底是个什么: 先上一段代码: var a = 'jack' ...
- JS 作用域和作用域链
作用域 JavaScript 中的作用域是我们可以有效访问变量或函数的区域.作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript 有两种类型的作用域:全局作用域.局 ...
- 深入理解JS作用域和作用域链
作用域(scope) 1.什么是作用域 概念:作用域是在程序运行时代码中的某些特定部分中变量.函数和对象的可访问性. 从使用方面来解释,作用域就是变量的使用范围,也就是在代码的哪些部分可以访问这个变量 ...
- JS作用域与作用域链附测试题
分类 全局作用域 函数作用域 块级作用域(ES6之后) 作用 隔离变量,不同作用域下同名变量不会有冲突 作用域与执行上下文 区别 – 除全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时 ...
- 如何理解JS中作用域和作用域链
1.背景介绍 任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期.在JavaScript中,变量的作用域有全局作用域和局部作用域两 ...
- js作用域及作用域链
一.作用域定义 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一 ...
最新文章
- Android 性能优化
- java删除目录以及目录下文件,java删除文件、删除目录及目录下的文件
- 二叉苹果树(树型DP+背包)
- 20201014 《计算感知》第2节课 笔记
- Java中的观察者设计模式
- python网络爬虫系列(一)——urllib库(urlopen、urlretrieve、urlencode、parse-qs、urlparse和urlsplit、request.Request类)
- 我们通过一个服务器程序,以研究backlog参数对listen系统调用的影响,运行截图如下...
- ImageNet dataset下载
- 华硕怎么安装linux系统教程,华硕笔记本系统如何安装win10和linux 双系统
- (java毕业设计)基于java学生宿舍管理系统
- java程序在哪里运行_JAVA代码是怎么运行的
- 根据程序流程图化程序流图_程序流程图有什么用?简单实用的流程图模板大全...
- □ 影片名:《陈好-女人要爱自己》(7012) 在线播放
- 数学公式编辑器:MathType 7 for mac
- 致敬第一个1024(第一次Java代码编程)
- 双摄像头深度剖析 (1):双Camera都能做什么?
- android MVP——mvp架构的应用和优化
- 中国移动与佳乐科仪签署物联网合作协议 共迈“工业4.0”
- 单片机c语言程序编写步骤,用c语言编写单片机流水灯程序详解
- Element ui+vue前端框架组件主题美化后台管理系统模板html
热门文章
- 关于IsolatedStorageFile存取文件的问题
- 数据结构C#版笔记--树与二叉树
- matlab去除周期噪声,matlab在空域与频域中去除周期噪声、椒盐噪声的简单应用
- 学python语言用什么软件-对于自学python的初学者来说,应该使用什么编辑工具?...
- python使用缩进作为语法边界一般建议怎样缩进-python基础自测挑战题,适合刚起步不久的小猿!...
- python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
- 零基础python必背代码-零基础小白Python入门必看:通俗易懂,搞定深浅拷贝
- python爬虫案例-python爬虫详细解析附案例
- python教学网站-python教学网站
- esp32 python-ESP32教程:MicroPython支持