《JavaScript核心技术开发解密》读书笔记(一)

《JavaScript核心技术开发解密》读书笔记(一)
《JavaScript核心技术开发解密》读书笔记(二)
《JavaScript核心技术开发解密》读书笔记(三)
《JavaScript核心技术开发解密》读书笔记(四)
《JavaScript核心技术开发解密》读书笔记(五)

一、三种基础数据结构 【 栈(stack )、堆 (heap)、队列(queue)】
JavaScript 作为一门高级程序语言,并没有同其他语言那样区分栈区或堆区,因此这里不做扩展 我们可以简单粗暴地认为在JavaScript中,所有的数据都是存放在堆内存空间中的。

1、栈: 栈表达的是一种数据在内存中的存储区域,通常叫作栈区。(先进后出)[数组的push,pop]
栈可用来规定代码的执行顺序,在 JavaScript 中叫作函数调用栈( call stack ),它是根据栈数据结构理论而实现的一种实践
在这里插入图片描述

2、堆: 堆数据结构通常是一种树状结构。[对象的访问,不用关心对象的属性的顺序]
在这里插入图片描述

3、队列: 队列是一种先进先出的数据结构。( 理解队列数据结构的目的是为了搞清楚事件循环( Event Loop )机制到底 是怎么回事 )
在这里插入图片描述


二、内存空间
JavaScript 有七种内置类型:

 • 空值(null)
 • 未定义(undefined)
 • 布尔值( boolean) 
 • 数字(number) 
 • 字符串(string) 
 • 对象(object) 
 • 符号(symbol,ES6 中新增)

引用数据类型(Object)的值是保存在堆内存空间中的对象。引用数据类型都是按引用访问的,在操作对象时,实际上是在操作对象的引用而不是实际的对象

JavaScript的垃圾回收实现主要依靠“引用”的概念。当一块内存空间中的数据能够被访问时,垃圾回收器就认为“该数据能够被获得”。不能够被获得的数据,就会被打上标记,并回收内存空间。这种方式叫做“标记-清除算法”


三、执行上下文
JavaScript代码执行时,会进入一个执行上下文中,执行上下文可以理解为当前代码的运行环境。
JavaScript中的运行环境主要包括三种

    全局环境:代码运行起来后首先会进入全局环境
    函数环境:当函数被调用执行时,会进入当前函数中执行代码
    eval环境:不建议使用

在一个JavaScript程序中,必定会出现多个执行上下文。JavaScript引擎会以栈(即函数调用栈)的方式来处理它们。函数调用栈规定了JavaScript代码的执行顺序。栈底永远都是全局上下文,栈顶则是当前执行上下文。

当一个函数调用时,一个新的执行上下午就会被创建。执行上下文生命周期:创建阶段,执行阶段

    创建阶段:创建变量对象,确认作用域链以及this的指向。
    执行阶段:开始执行代码,完成变量赋值、函数引用以及执行其他可执行代码。

四、变量对象
JavaScript代码中声明的所有变量都保存在变量对象中,除此之外,变量对象还可能包括以下内容:

    函数的所有参数
    当前上下文中的所有函数声明(通过function声明的函数)
    当前上下文中的所有变量声明(通过var声明的变量)

变量提升
在变量对象的创建过程中,函数声明的执行优先级会比变量声明的优先级更高一点, 而且同名的函数会覆盖函数与变量,但是同名的变量并不会覆盖函数,但是在上下文的执行阶段,同名的函数会被变量重新赋值

如果当前执行上下文处于函数调用栈的栈顶,则意味着当前上下文处于激活状态, 此时变量对象称之为活动对象( AO, Activation Object )。活动对象中包含变量对象的所有属性,并且此时所有的属性都已经完成了赋值,除次之外,活动对象还包含了 this 的指向

下一篇:《JavaScript核心技术开发解密》读书笔记(二)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaScript核心技术 简介: 《JavaScript核心技术》对于各种浏览器、浏览器版本、JavaScript版本、DOM版本的介绍,有助于我们理解所遇到的各种新旧代码,使我们能够对这些代码做出正确的取舍。《JavaScript核心技术》还提供了一些使用JavaScript的最佳实践。无论是新手还是老手,这些如何正确使用JavaScript的经验都能帮助他们养成良好的编程习惯。《JavaScript核心技术》还介绍了一些调试和开发JavaScript的工具,这些工具无疑能够提高我们的开发效率。 《JavaScript核心技术》最后对于Ajax和几个流行的JavaScript库的介绍,无疑会开阔我们在JavaScript使用上的思路。 《JavaScript核心技术》是一本真正意义上的“新书”,不仅介绍了最新的JavaScript知识和方向,还完全覆盖了当今Web开发中关于JavaScript的所有重要话题,它使用了大量实例代码,图文并茂地讲解了使用JavaScript的各个层次和领域的内容。它不是一本参考手册,但却是一本值得拥有的教程。 JavaScript核心技术 目录: 前言 第1章JavaScript初探 1.1规范和实现相互交织的历史 1.2跨浏览器的不兼容性和其他常见的JavaScript传说 1.3你能用JavaScript来做什么 1.4JavaScript初探:“HelloWorld!” 1.5JavaScript沙箱 1.6可访问性和JavaScript的最佳实践 第2章JavaScript数据类型与变量 2.1变量的标识 2.2作用域 2.3简单类型 2.4常量:有名称但不改变 2.5习题 第3章运算符和语句 3.1JavaScript语句的格式 3.2简单语句 3.3条件语句和程序流 3.4条件运算符 3.5逻辑运算符 3.6高级语句:循环语句 3.7习题 第4章JavaScript对象 4.1对象构造函数 4.2Number对象 4.3String对象 4.4正则表达式与RegExp 4.5有专门用途的对象:Date和Math 4.6JavaScript数组 4.7关联数组:不是数组的数组 4.8习题 第5章函数 5.1定义函数:细数所有方式 5.2回调函数 5.3函数和递归 5.4嵌套函数、函数闭包和内存泄漏 5.5作为对象的函数 5.6习题 第6章捕捉事件 6.1O级DOM上的事件句柄 6.22级DOM上的事件句柄 6.3产生事件 6.4习题 第7章表单与即时验证 7.1访问表单 7.2把事件附加在表单上:不同的方法 7.3选择列表 7.4单选按钮和复选框 7.5输入字段和JiT正则表达式 7.6习题 第8章沙箱及之上的cookie、连通性和隐私 第9章基础浏览器对象 第10章DOM:文档对象模型 第11章创建定制的JavaScript对象 第12章构建动态网页:在脚本中加入样式 第13章使用Ajax 第14章好消息:生动的程序库!令人惊异的Web服务!有趣的API! 附录习题答案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值