• 第六章 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

  • 相关阅读:
    mongoDB Liunx下安装及配置
    Node.js WEB服务器(1)——编写简单的HTTP服务器
    MongoDB 和 NoSQL简介
    ES6的Promise浅析
    Node.js的模块系统
    Node.js的异步IO和事件轮询
    mybatis 关联表心得
    mustache 模板,用于构造html页面内容
    Python实现冒泡,选择排序
    文件路径太长无法删除 robocopy
  • 原文地址:https://www.cnblogs.com/jingubang/p/4626712.html
Copyright © 2020-2023  润新知