美文网首页
JS笔记:执行环境与作用域

JS笔记:执行环境与作用域

作者: klmhly | 来源:发表于2018-08-28 21:31 被阅读0次

一、概念解析

1. 执行环境

是Js中最为重要的一个概念,执行环境定义了变量或者函数有权访问的其他数据,决定了它们各自的行为。

执行环境分类
(1)全局执行环境
指的是全局的,不在任何函数里的代码
全局执行环境是最外围的一个执行环境。在 Web 浏览器中,全局执行环境被认为是 window 对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。代码载入浏览器时,全局执行环境被创建(当我们关闭网页或者浏览器时全局执行环境才被销毁)

(2)函数执行环境
在函数体内的代码
每个函数都有自己的执行环境,当执行进入一个函数时,函数的执行环境就会被推入一个执行环境栈的顶部并获取执行权。当这个函数执行完毕,它的执行环境又从这个栈的顶部被删除,并把执行权并还给之前执行环境

2. 变量对象

每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

变量对象包含,var定义的变量, function定义的函数, 以及形参
例子:

<script type="text/javascript">
var color = "red";

function changeColor(color1) {
    var color2 = color1;
}

changeColor(color)
</script>

对于这段代码变量对象有两部分:
通过变量声明定义的变量color
通过函数声明定义的函数 changeColor

3. 活动对象

如果这个环境是函数,则将其活动对象作为变量对象。活动对象是在进入函数的执行环境时创建的,并为该对象初始化一个 arguments 对象(这个对象在全局环境是不存在的!)。
上面的代码活动对象当执行changeColor函数时被创建:

  1. 初始化生成的 arguments 对象
  2. 通过变量声明的变量 color2.

4. 作用域链

当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。

当多个函数嵌套关系时,内层的函数可以访问外层的变量,反之则不行。这就是作用域链的核心。解析过程是沿着作用域链一级一级从自身向外层搜索的。

JS笔记:执行环境与作用域

相关文章

  • javascript的执行上下文—作用域链 闭包

    js作用域:函数作用域、全局作用域作用域链:由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访...

  • JS笔记:执行环境与作用域

    一、概念解析 1. 执行环境 是Js中最为重要的一个概念,执行环境定义了变量或者函数有权访问的其他数据,决定了它们...

  • 作用域与this

    作用域与 this 一、作用域 1.1 JS 中的内存空间分为两种: 栈内存:提供 js 代码的执行环境;存储基本...

  • JS学习之执行环境和作用域

    JS学习之执行环境和作用域 执行环境和作用域相关介绍 执行环境 执行环境定义了变量或函数有权访问的其他数据,决定了...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • js执行环境(作用域)与作用域链

    一般情况下,我们把执行环境分为全局执行环境和局部执行环境,其中局部执行环境我们又可以称之为函数执行环境。通俗的说,...

  • js函数中的this

    前两篇文章“执行环境和作用域”和“js中的闭包”,我对谈了执行环境、作用域、作用域链和闭包的理解。但当牵涉到对象中...

  • JS 作用域与作用域链

    1. 作用域 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存。...

  • 作用域和作用域链

    1. 作用域 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存。...

  • JS执行环境与作用域链

    执行环境 执行环境(excecution context),也叫做执行上下文,定义了变量或函数有权访问的其他数据,...

网友评论

      本文标题:JS笔记:执行环境与作用域

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