zoukankan      html  css  js  c++  java
  • 第六章 javaScript执行环境和作用域

    这个只是点对于初学者其实大概了解就可以,但是要研究明白javaScript的机制,就是非常必要的,这只是我的一些记录,大家参考即可,如有错误请指出。

    执行环境的概念是javaScript一个虚拟的概念,如何定义它呢?它的作用又是什么呢?它是怎么组成的呢?

    大家都比较认可的说法:执行环境又称为执行上下文,从实际的表现来看,可以把它理解为由“对象”组成的一个堆栈。既然是堆栈,就是先入后出了。

    组成堆栈的对象是什么对象?我没有找到确切的定义,基于我自己的理解,这个对象是一个自定义对象,里边包含有变量、函数定义(不包括函数表达式)、参数列表、作用域链以及this(也就是当前)。

    比如说在浏览器环境下(为什么特意说明,因为js可以不在浏览器环境内运行,例如node.js),window对象就是全局的执行环境的对象,在堆栈内的表现,它就是最先入栈的对象。

    其实这个执行环境是相对于函数来说的,一个函数的调用(甚至递归)就产生了一个新的上下文环境。

    当浏览器初始化时,window对象就建立了,它包含所有全局变量、函数等。语句执行遇到一个函数调用时,就会把函数的上下文对象压入执行环境栈,然后函数就初始化、执行,执行完毕后出栈。

    变量的作用域是通过“执行环境对象”的作用域链来进行管理和使用的,对于作用域链,js的机制是这么设计的,当前执行环境对象建立时,会自动有一个作用域链,作用域链是一个 对象列表(list of objects) ,用以检索上下文代码中出现的 标识符(identifiers) 。

    当使用变量时,会从当前活动的执行环境对象里寻找,如果没有就到父级对象里寻找,一直找到window,如果还没有,就返回undefined。

    我只是简单的这么理解,有一个文章写的不错,比我这个强多了,但是为了学习我还是自我总结了一下。

    地址如下:http://www.cnblogs.com/no-particular/archive/2013/01/31/2887293.html

  • 相关阅读:
    NSCharacterSet 最经常使用的使用方法
    IOS
    hdu 3117 Fibonacci Numbers
    Hibernate5配置与使用具体解释
    SDNU 1206.蚂蚁感冒 【代码如此简单,思维练习】【7月29】
    2048游戏分析、讨论与扩展
    hash_set和hash_map
    实现邮箱找回的思路分析
    学习OpenCV——粒子滤波(网上两篇文章总结)
    学习OpenCV——配置CUDA环境
  • 原文地址:https://www.cnblogs.com/jingubang/p/4626712.html
Copyright © 2011-2022 走看看