美文网首页
《JavaScript 语言精粹》笔记

《JavaScript 语言精粹》笔记

作者: 记录录 | 来源:发表于2019-01-08 11:37 被阅读0次
《JavaScript 语言精粹(修订版)》
Douglas Crockford 著
北京:电子工业出版社
2012 年 9 月第 2 版

U1 精华

  1. 词法作用域
  • 词法作用域/静态作用域:作用域在词法分析阶段就确定了,不会改变
  • 动态作用域:运行时根据程序的流程信息来动态确定,而非写代码时静态确定
  • 参考
  1. JavaScript 是一门弱类型的语言,所以 JavaScript 编译器不能检测出类型错误

U2 语法

  1. 没有用的注释比没有注释更糟糕

  2. /* */可能出现在正则表达式字面量里面,所以块注释对于被注释的代码块来说不安全

  3. 没有分离出整数类型,完全避免了短整形的溢出问题

  4. NaN 不等于任何值,包括它自己

isNaN(NaN);  // true
NaN === NaN;  //false
NaN == NaN;  //false
  1. \u 指定数字字符编码("A" === "\u0041"

  2. JavaScript 中的代码块不会创建新的作用域

  3. 假:false、null、undefined、''、0、NaN

  4. break 可以指定一个可选的标签,那退出的就是带该标签的语句(break 和标签之间不能换行)

function foo ()
{
    dance:
    for(var k = 0; k < 4; k++){
        for(var m = 0; m < 4; m++){
            if(m == 2){
                break dance;
            }
        }
    }
}
  1. typeof 运算数为数组或者 null 时,结果是 'object'

  2. 求模运算

7 % 2  // 1
7 % -2  // 1
-7 % 2  // -1
-7 %-2  // -1

U3 对象

  1. 属性的名字可以是包括空字符串在内的任意字符串

  2. 如果属性名是一个合法的 JavaScript 标识符且不是保留字,则不强制要求用引号括住属性名(JavaScript 的标识符中包含连接符-是不合法的,但允许包含下划线_

var stooge = {
 "first-name": "Jerome",
last_name: "Howard"
}
  1. 对象是可嵌套的

4. ||运算可以用来填充默认值

var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";

5. && 避免从 undefined 成员属性中取值导致的 TypeError 异常

flight.euipment  // undefined
flight.euipment.model  // throw "TypeError"
flight.euipment && flight.euipment.model  // undefined
  1. 对象通过引用来传递,它们永远不会被复制
var a = {}, b = {}, c = {};  // 每个都引用一个不同的空对象
a = b = c = {};  // 都引用同一个空对象
  1. 原型连接在更新时是不起作用的。当我们对某个对象作出改变时,不会触及该对象的原型

  2. 原型关系是动态的关系(当添加一个新的属性到原型中,该属性会立即对所有属于该原型创建的对象可见)

9. 处理不需要的属性

  • 检查并丢弃值为函数的属性值(typeof
  • hasOwnPropety 方法(若对象拥有独有的属性,返回true
  1. 用枚举for in属性名出现的顺序是不确定的;要确保特定的顺序,可以使用数组+for

  2. 用枚举for in会列出所有的属性(包括 函数 和 原型中的属性)

  3. delete 不会触及原型链中的任何对象;删除对象的属性可能会让来自原型链中的属性透现出来

13. 减少全局变量污染

  • 为应用只创建一个唯一的全局变量(把全局性的资源都纳入一个名称空间之下)
  • 闭包

----------------------------2019.1.8----------------------------
----------------------------未完待续----------------------------

相关文章

  • 《JavaScript语言精粹》笔记

    1.下面的值被当作假(false) 2.如果你尝试检索一个并不存在的成员属性的值,降返回undefined, ||...

  • 《Javascript语言精粹》笔记

    语法 1.数字 a. javascript只有一种数字类型,表示64位的浮点数,避免了短整型的溢出问题。1和1.0...

  • 《JavaScript 语言精粹》笔记

    U1 精华 词法作用域 词法作用域/静态作用域:作用域在词法分析阶段就确定了,不会改变 动态作用域:运行时根据程序...

  • JavaScript语言精粹笔记

    首先呢,进入公司实习已经半个月了,发现自己,唉,一言难尽。老大给推荐了几本书,这本是其中一本,先看看。 字面量(l...

  • 创建简单的JavaScript对象

    引言:阅读《JavaScript语言精粹》这本书时的一些笔记摘要。在JavaScript,一切皆对象,对象相当于属...

  • 2016 读书清单

    技术类javascript权威指南 (未完成)javascript语言精粹(?)javascript设计模式(未完...

  • 《JavaScript语言精粹》学习笔记

    按章节来记录的,都是看这本书时的学习笔记,有些地方真的是,不看根本不知道原来是这个样子。知其所以然的学习过程 2....

  • JavaScript语言精粹笔记-1

    第一章 精华 1.为什么要用JavaScript? 首先:因为你真的别无选择,web已经成为一个重要的应用开发平台...

  • 《JavaScript语言精粹》阅读笔记

    第1章 精华 javascript是一门杰出的动态编程语言,拥有极强的表达能力。但是它是一门弱类型语言,编译器无法...

  • JavaScript语言精粹笔记 - 草稿

    首先呢,进入公司实习已经半个月了,发现自己,唉,一言难尽。老大给推荐了几本书,这本是其中一本,先看看。 字面量(l...

网友评论

      本文标题:《JavaScript 语言精粹》笔记

      本文链接:https://www.haomeiwen.com/subject/exkvrqtx.html