第7章 函数表达式

  1. 匿名函数的name属性是空字符串;
  2. 闭包是函数:闭包是有权访问另一个函数作用域中变量的函数;(P181 副作用,解释了点击li弹出循环最后值的原因)
  3. 当某个函数第一次被调用时,会创建一个执行环境及相应作用域链,并把作用域链赋值给一个特殊内部属性[[scope]],使用this、arguments和命名参数来初始化函数的活动对象;
  4. 无论什么时候在函数中访问一个变量时,就会从作用域链中搜索具有相应名字的变量。一般来讲,当函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域(全局执行环境的变量对象);
  5. 闭包不然:在函数内部定义的函数,会将外部函数的活动对象,添加到自己的作用域链中;
  6. 闭包的副作用:闭包只能取得外部函数中任何变量的最后一个值;
function createFunctions() {var result = new Array()for(var i = 0;i < 10; i++){return[i] = function() {return i}}return result
}
// 每个函数的作用域链中都保存着createFunctions()函数的活动对象,它们引用同一个变量i
  1. 创建一个匿名函数,强制让闭包的行为符合预期:
function createFunctions() {var result = new Array()for(var i = 0;i < 10; i++){return[i] = function(num) {return function() {return num}}(i)}return result
}
//没有直接将闭包赋值给数组;
//定义了一个匿名函数,并将立即执行该函数的结果赋值给数组;
//匿名函数有参数num,也是最终函数要返回的值;
//在调用每个匿名函数时,传入变量i,函数参数是按值传递的,会将变量i的当前值传给num
//匿名函数的内部,又创建并返回了一个访问num的闭包
  1. 匿名函数的执行环境具有全局性,其this对象通常指向window:
var name = "The Window"
var obj = {name: "My Obj",getNameFunc: function(){return function(){return this.name}}
}
obj.getNameFunc()() // The Window
  1. JavaScript不会告诉你是否多次声明了同一个变量,遇到这种情况,它会对后续的声明视而不见;
  2. 用匿名函数来模仿块级作用域:
(function(){// 这里是块级作用域
})()

错误写法:

function(){// 这里是块级作用域
}()
错误: 函数声明后面不能跟圆括号

第8章 BOM

  • window对象
  • location对象
  • navigator对象
  • screen对象
  • history对象
  1. 尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在:
var b = a //报错,这里a未定义
var c =  window.a // c的值是undefined

第9章 客户端检测

  • 能力检测:
    1) 先检测达成目的的最常用的特性(避免测试多个条件)
    2) 必须测试实际要用到的特性

第10~12章 DOM

  • NodeList是有生命、呼吸的对象,而不是在我们第一次访问它们的某个瞬间拍摄下来的一张快照;
  • 如果列表中只有一个节点,那么该节点的nextSibling和previousSibling都为null;
  • ownerDocument是所有节点都有的属性,指向整个文档的文档节点;

第13章 事件

  • 建议使用事件冒泡;
  • 事件处理程序中的代码在执行时,有权访问全局作用域中的任何代码;
  • 在HTML中指定事件处理程序的缺点:
    1)存在时差问题:用户可能在页面刚显示按钮时,就点击,如果点击事件是在按钮下方、页面的最底部定义的,就会引发错误,可以封装在try-catch块中;
    2)事件处理程序的作用域链在不同浏览器中可能会有不同效果;
    3)HTML和JavaScript紧密耦合;
  • 事件对象
    1) DOM中:event对象作为参数;
    2) IE中:event对象作为window对象的属性

《JavaScript 高级程序设计》笔记 第7章及以后相关推荐

  1. JavaScript高级程序设计笔记01 | 第一章到第四章 | 关键字与保留字 | 数据类型 | 操作符 | 作用域

    观前提示:大部分都是书上的内容,个人理解的部分的较少,看我的笔记还不如去看书 第二章 async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本.只对外部 ...

  2. JavaScript高级程序设计笔记 - 第四章 变量 作用域 内存问题

    4.1 基本类型和引用类型的值 基本类型: 简单的数据段 引用类型: 指那些可能有多个值构成的对象, 指保存在内存中的对象 4.1.2 复制变量值 除了保存的方式不同之外,在从一个变量向另一个变量复制 ...

  3. 《javascript高级程序设计》第六章 读书笔记 之 javascript对象的几种创建方式

    本文首发于https://segmentfault.com/a/1190000017776314 一.工厂模式 工厂模式:使用字面量和object构造函数会有很多重复代码,在此基础上改进 解决了多个相 ...

  4. 笔记《javascript高级程序设计》 第12章 DOM2和DOM3

    DOM2 级核心:在 1 级基础上构建,为节点添加更多方法和属性 DOM2 级视图:为文档定义了基于样式信息的不同视图 DOM2 级事件:说明了如何使用事件和DOM文档交互 DOM2 级样式:如何以编 ...

  5. 读书笔记-《JavaScript高级程序设计》-第2章 在HTML中使用JavaScript

    <script>元素 带有src属性的标签之间再有js的代码,只会下载和执行外部脚本文件,忽略潜入的代码 <script src="./test.js">a ...

  6. 《javascript高级程序设计》第六章 读书笔记 之 javascript继承的6种方法

    本文首发于https://segmentfault.com/a/1190000017840651 ECMAScript只支持实现继承,主要依靠原型链来实现.与实现继承对应的是接口继承,由于script ...

  7. 《JavaScript高级程序设计》第8-9章

    第八章 BOM 1.window对象:既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象 1)全局作用域:所有在全局作用域中声明的变量.函数都会变成w ...

  8. JavaScript高级程序设计(第三章)

    目录 3.基本概念 3.1语法 3.1.1区分大小写 3.1.2标识符 3.1.3注释 3.1.4严格模式 3.1.5语句 3.2关键字和保留字 3.3变量 3.4数据类型 3.4.1 typeof操 ...

  9. 《javascript高级程序设计》第五章知识点总结

    第五章知识点总结 1.object类型 访问对象的方法:①点表示法        (people.name) :      ②方括号表示法         (people[name]). 常用方法:h ...

  10. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

最新文章

  1. Phalcon 訪问控制列表 ACL(Access Control Lists ACL)
  2. python九十八类_Python领域最伟大工程师Kenneth Reitz,教你写代码
  3. 从国内的源使用pip安装库,提高安装速度
  4. suse linux查版本号,查看SUSE版本号
  5. 2017西安交大ACM小学期数据结构 [线段树]
  6. maven dependency scope
  7. CentOS 7 - 创建新用户
  8. C++STL查找,lower_bound()函数和upper_bound()函数的区别
  9. GT S7278 Android4.4,三星S7278U官方原版固件rom系统刷机包(线刷格式)
  10. 我与旧事归于尽,来年依旧迎花开~
  11. 泥瓦匠之 Java 的成长感悟
  12. 重置微信内置浏览器字体大小
  13. OBS Studio录屏黑屏解决办法win10
  14. Spring--官方文档部分翻译(第五章 面向Aspect的编程-AOP)
  15. 21种优化产品转化率的设计技巧
  16. 了解一下国标和行标的代号
  17. Apache2.2.22 + PHP5.2.17 + MySQL5.5.22 快速搭建部署PHPWind开源论坛
  18. 电脑正在更新计算机一直是,win10电脑一直不停更新怎么办啊
  19. html5之太阳地球月球,使用html5画出地球月球和太阳之间的环绕关系
  20. Maven升级3.8.1后maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories

热门文章

  1. html表单赋值提交,jQuery自动给表单赋值
  2. oracle命令行查看编码,Oracle数据库查看编码和修改编码
  3. sketchup生成面域插件_独家教程 | 快速抓取“高精准”场地信息,康石石教你生成不同“体量”地形...
  4. python中怎么调用函数_浅谈Python中函数的定义及其调用方法
  5. 【caffe-matlab】权重以及特征图的可视化
  6. 看了数百个PPT封面,我只想告诉你这两个套路!
  7. iOS中持久化存储SQLite(一)
  8. HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)
  9. Golang的值类型和引用类型的范围、存储区域、区别
  10. Oracle 【IT实验室】数据库备份与恢复之:如何对Oracle数据库文件进行恢复与备份...