接上篇 js 函数作用域
还是用那个例子
<script> function addEvents(){ var id = “form1”; document.getElementById(“save_button”).onclick = function(event){ sumitForm(id); }; } </script>
addEvent函数中还有一个function函数,addEvent函数未执行的时候,浏览器不会去创建里面的function,当addEvent执行的时候,浏览器会为function初始化scope属性,addEvent活动对象也属于scope中一员,
如图:
所以当addEvent被执行完毕的时候,活动对象被function引用,是不会被销毁,闭包就是这样占用内存,而且变量访问层次更深。
当单击save_button执行function的时候,浏览器会为function创建一个运行期上下文,创建一个活动对象,
如图
如果我的理解有误,请提出,谢谢。
相关推荐
JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...
JavaScript作用域是编程中至关重要的...在实际编程中,我们还会遇到闭包、块级作用域(ES6中的`let`和`const`)等更高级的概念,这些都是基于作用域链的扩展,理解它们对于成为精通JavaScript的开发者来说必不可少。
### 闭包作用域 #### 一、JavaScript闭包简介 在JavaScript中,闭包(Closure)是一个非常重要的概念,它允许一个函数访问并操作其外部作用域中的变量,即使该函数在其外部作用域之外被调用。这种特性使得闭包成为...
本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下: 闭包定义 闭包指的是有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数A内部创建另一个函数B,那么函数B...
JavaScript中的作用域链是编程中一个至关重要的概念,它决定了变量和函数的可访问性以及在不同作用域内的查找顺序。在深入理解作用域链之前,我们首先要了解什么是执行环境和变量对象。 执行环境,简单来说,就是...
前端面试题,包含JavaScript的闭包,作用域,原型,原型链,上下文环境以及DOM,BOM封装函数深度克隆,以及一些常见的·JS问题,试题简单但是容易混淆,作为前端工程师必考题
**作用域链**是JavaScript中用于决定变量访问的一个机制。每个函数在创建时,都会形成一个作用域链,这个链由当前函数的作用域(包含局部变量)和所有父级作用域(直至全局作用域)组成。作用域链确保了函数能够访问...
在JavaScript编程中,作用域和作用域链是影响程序性能的关键因素之一。优化作用域链是提高JavaScript代码执行效率的重要手段。下面我们从多个方面来详细探讨作用域链的概念、作用域链的层级关系、变量访问的性能影响...
JavaScript是Web开发中不可或缺的一部分,它提供了丰富的特性,如作用域、闭包、对象和原型链,这些都是理解和编写高效代码的关键。以下是对这些概念的详细解释: 1. **JavaScript变量作用域** - **函数作用域**:...
JavaScript中的作用域链是理解变量查找和闭包的关键概念。作用域链主要涉及到函数执行上下文和全局执行上下文中的作用域。以下是对这个主题的详细解释: 首先,每个函数在创建时,都会有一个内部属性[[scope]],它...
"作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?" 标题“作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?”中,我们可以看到JavaScript引擎是如何选择相同的变量的。...
### JS的作用域与闭包 #### 一、作用域的基础概念 作用域是JavaScript中一个非常核心的概念,它定义了变量的可见性和生命周期。在学习作用域之前,我们需要先了解几个基本概念: - **变量**: 在JavaScript中,...
在JavaScript编程中,作用域链和闭包是两个至关重要的概念,它们对于理解代码执行机制以及函数内部如何访问和管理变量至关重要。让我们深入探讨这两个概念。 首先,**作用域链**是JavaScript中的一种机制,它定义了...
scope-chains-closures, Javascript作用域链和闭包 workshop 范围链和闭包 workshop正在启动$ npm install -g scope-chains-closures$ scope-chains-closures # or, shorter: sccjs使用箭头
当代码试图访问一个变量时,JavaScript引擎会顺着作用域链向上查找,直到找到该变量或者达到作用域链的末端,如果未找到则返回undefined。 闭包是JavaScript中一个重要的概念,它允许一个函数访问并操作函数外部的...
深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系
2. **作用域链**:每个函数都有一个作用域链,用于查找变量。当内部函数试图访问一个变量时,它会首先在自己的作用域内查找,如果没有找到,则会沿着作用域链向上查找,直到找到全局作用域。 3. **变量持久化**:...
作用域链是JavaScript在查找变量时遵循的一个规则集合。当尝试访问一个变量时,JavaScript引擎会首先在当前作用域中查找,如果找不到,就会沿着作用域链向上层作用域查找,直到找到变量或者到达全局作用域。如果在...