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

  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/jingubang/p/4626712.html
Copyright © 2011-2022 走看看