美文网首页
学习JS笔记(第七章-闭包,作用域)

学习JS笔记(第七章-闭包,作用域)

作者: 这很重要吗 | 来源:发表于2017-05-03 12:38 被阅读0次

闭包的概念##

Paste_Image.png

闭包实例##

数据传递更加灵活###

Paste_Image.png

常见错误之循环闭包###

Paste_Image.png

封装变量###

Paste_Image.png

闭包小结##

Paste_Image.png

作用域##

js有三种作用域:全局,函数,eval,js 没有块级作用域

Paste_Image.png

作用域链###

new function()构造的函数访问不到当前函数内的变量

Paste_Image.png

利用函数中作用域封装###

javascript可以用+()放在function前,为函数表达式写法,防止function前置形成函数声明,函数声明后加()会报语法错误

Paste_Image.png

ES3执行上下文##

执行上下文,EC,栈结构,每一个函数都有自己的执行上下文EC(执行环境 execution context),并且每个执行上下文中都有它自己的变量对象VO(Variable object),用于存储执行上下文中的变量 、函数声明 、函数参数,这解释了js如何找到我们定义的函数和变量。

Paste_Image.png

变量对象VO###

变量对象(Variable Object,简称VO),是一个抽象概念中的“对象”。
它用于存储执行上下文中的变量、函数声明、函数参数。
函数中还有一个概念——激活对象(AO),自带参数arguments

Paste_Image.png

执行上下文与变量对象###

Paste_Image.png

全局执行上下文(浏览器)###

Paste_Image.png

函数中的激活对象AO###

对于函数而言,AO和VO是一个对象,函数AO分为两个阶段

  1. 变量初始化阶段
  2. 代码执行阶段

函数变量初始化


函数

全局作用域下的初始化


Paste_Image.png

Vo(变量对象)-函数上下文对象,将按照如下顺序进行填充初始化:
1.首先函数参数(若未传入,初始化该参数值为undefined)
2.然后函数声明(若发生命名冲突,会直接覆盖)
3.最后变量声明(初始化变量值为undefined,若发生命名冲突,会忽略。)

实例:

Paste_Image.png Paste_Image.png

函数表达式不会影响VO,在vo中没有,所以不能前置函数表达式,_e是命名函数表达式的名字

Paste_Image.png

代码执行阶段

代码

实战###

Paste_Image.png

总结##

不同情况下的this的值 构造器中的this

函数属性

函数是对象,所以它也有属性

相关文章

  • 我的JS笔记汇总

    学习JS的笔记整理: 变量; 类型检测; 类型转换; 作用域; 执行上下文; 函数; 闭包; 模块; 原型; 类;...

  • js闭包的理解

    什么是闭包 通俗的来讲,个人觉得闭包就是延长变量作用域的函数。众所周知js的作用域分为全局作用域和链式作用域。在函...

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • JS 闭包(Closure)

    参考阮一峰老师的JS 闭包 理解闭包前需要理解变量作用域、变量提升 JS作用域 那如何让它依次打印,12345呢;...

  • javaScript门道之闭包

    闭包的学习路径:变量的作用域 -> 闭包的概念 ->闭包的应用 1.变量的作用域 变量的作用域分为作用于全局和作用...

  • js闭包详解

    1.什么是闭包? 要了解什么是闭包,首先你要了解作用域。 js的作用域分两种,全局作用域和局部作用域。 我们知道在...

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

  • 老司机也翻车的闭包

    前置知识 es6之前,js中变量作用域分为两种:全局作用域、局部作用域。学习闭包之前需要先了解作用域及变量提升的概...

  • 你不懂JS:作用域与闭包

    你不懂JS:作用域与闭包 第五章:作用域闭包 希望我们是带着对作用域工作方式的健全,坚实的理解来到这里的。 我们将...

网友评论

      本文标题:学习JS笔记(第七章-闭包,作用域)

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