javascript执行环境以及作用域链的自己的一些理解

wjraihyw 2018-11-08 原文

javascript执行环境以及作用域链的自己的一些理解

js的作用域链是一个很重要的概念,如果理解了它,可能会让自己对于js的运行机制有一个更好的理解,因为自己也是一个初学者,所以希望通过这样的形式记录下来,让自己记忆更加深刻。以是自己对于js作用域的一些理解:

A.首先是js的执行环境,也可以叫做执行上下文,一般称为环境就行。并且在js中,有一个一直都存在的环境(执行环境),那就是全局执行环境,也就是window对象,只有当结束全部程序或者是关闭网页或是浏览器时,那这个全局执行环境才会被销毁。而其他的环境则是存放在一个环境栈当中。而如果要把一个环境存入环境栈中的话,举一个例子就相当于:js执行到哪一个函数的时候,那么js就会把这个函数的执行环境加入到环境栈中,在当函数执行完毕之后,那么js再把这一个函数的环境从环境栈中拿出来。

B.其次就是js的作用域链,先说重要的一点:每一个执行环境都会有一个对应的变量对象,变量对象简单来理解就是在环境中被定义的变量,函数等等一系列数据;再说作用域链:每当创建一个函数的时候,那么js会自己为这个函数创建一个预先包含全局变量对象的作用域链,然后把这个作用域链保存在内部的[[Scope]]属性中,当这个函数被调用的时候,首先就会将这个函数的执行环境添加到环境栈中,,然后通过复制函数的[[Scope]]属性中的对 象就可以构建起执行环境的作用域链;

C.所以照我的理解,一个函数只要已创建出来之后,那么这个函数的作用域链其实就已经会被确定下来,不管在哪个位置去执行这个函数的时候,那当函数的执行环境被加入到环境栈中时,那么它就会去复制原本已经确定的作用域链来完成所需各种数据的查找

发表于 2018-11-08 10:57 xiaoweiaixiaohao 阅读() 评论() 编辑 收藏

 

版权声明:本文为wjraihyw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wjraihyw/p/9927824.html

javascript执行环境以及作用域链的自己的一些理解的更多相关文章

  1. js的继承

    JS的继承 JS里常用的两种继承: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于JS不像ja […]...

  2. Chrome浏览器读写系统剪切板

    IE浏览器支持直接读写剪切板内容: 1 window.clipboardData.clearData(); 2 […]...

  3. 抛弃console.log(),拥抱浏览器Debugger

    译者按: 切换成本真的不高,建议使用开发者工具来Debug! 原文:How to stop using con […]...

  4. Jquery基础知识01

    1:$(document).ready()function{}和window.onload()的区别。   1 […]...

  5. JavaScript 常见的六种继承方式

    <h2 class="rich_media_title" id="activity-name"> […]...

  6. JavaScript条件语句

    声明该文部分代码和内容节选自菜鸟教程,仅用作个人学习,特此声明链接:https://www.runoob.com/13、JavaScript条件语句在 JavaScript 中,我们可使用以下条件语句:if 语句 - 只有当指定条件...

  7. 前端面试遇到的问题

    最近一场面试,发现了自己很多的问题,为此做个总结。非常感谢此次的面试。嘿嘿! 一、闭包中的问题 下列代码存在几 […]...

  8. ant-design-vue中tree增删改

    ant-design-vue中tree增删改  1. 使用背景 新项目中使用了ant-design-vue组件 […]...

随机推荐

  1. 第二波命令-下部

    第1章 显示行号 打印配置文件nginx.conf内容的行号及内容 如何做?创建环境 [root@nfsnob […]...

  2. Mac卸载mysql数据库

    mac下的应用程序中一般是无法找到mysql的安装文件进行直接删除的,所以,通常需要打开命令行工具Termin […]...

  3. Adobe Acrobat XI Pro破解版 v11.0.10中文版

    安装包下载地址:百度网盘->Windows软件->破解软件 Adobe Acrobat一款是专门的 […]...

  4. canvas实例–马赛克矩形

    <!DOCTYPE html> <html lang="en"> <head&g […]...

  5. Adobe全套2018安装

    https://jingyan.baidu.com/article/8ebacdf0700c0c49f65cd […]...

  6. Java 方法与数组

    方法 什么是方法? 方法定义:方法(Method),函数(function),其实就指一个特定的功能操作,程序 […]...

  7. 从 nodejs -> sequelize -> postgres,你都得设置好时区

    背景 最近在做报表统计,因为 sequelize 的时区配置没加导致了统计数字对不上的问题。 问:大家都知道时 […]...

  8. win7旗舰版安装 oracle 10g 不能进入图形界面的问题

     前阵子重装了系统,把dell机器自带的win7 64位(家庭版已升级旗舰版,装ORACLE正常)换回了32位 […]...

展开目录

目录导航