1 6种值被当做假:false、null、undefined、空字符串''、数字0、数字NaN,其他所有值都为真,包括"false"

2 typeof有6种值,分别是'number','string','boolean','undefined','function','object';其中typeof(null),结果是'object'

3 如果第一个运算数的值为真,那么运算符||产生它的第一个运算数的值.否则,它产生第二个运算数的值.如,可利用||运算符来填充默认值var status = flight.status || "unkonwn"

4 apply方法让我们构建一个参数数组传递给调用函数,它允许我们选择this的值。apply接受两个参数,第一个是要绑定给this的值,第二个是参数数组
//构造一个包含两个数字的数组,并将它们相加
var array = [3, 4];
var sum = add.apply(null, array); //sum的值为7

5 异常处理

var add = function(a, b) {
if(typeof a !== 'number' || typeof b !== 'number') {
throw {
name: 'TypeError',
message: 'add needs numbers'
};
}
return a + b;
} //构造一个try_it函数,以不正确的方式调用之前的add函数
var try_it = function() {
try {
add("seven");
} catch (e) {
document.writeln(e.name + ':' + e.message);
}
}

6 给Number.prototype增加一个integer方法,根据数字的正负来判断是使用Math.ceiling(向上取整)还是Math.floor(向下取整)

Number.method('integer', function() {
return Math[this<0 ? 'ceil' : 'floor'](this);
});
document.writeln((-10/3).integer()); //-3

7  移除字符串首尾空白的方法

String.method('trim', function() {
return this.replace(/^\s+|\s+$/g, '');
//正则的意思是从头开始匹配空白字符一次或多次,从最好开始匹配空白字符一次或多次
}); document.writeln('"' + " neat ".trim() + '"');

  

8 模块是一个提供接口却隐藏状态与实现的函数或对象,模块模式一般形式是:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数;最后返回这个特权函数,或者把他们保存到一个可以访问到的地方,使用模块模式可以摒弃全局变量的使用

String.method('deentityfity', function() {
//字符实体表,它映射字符实体的名字到对应的字符
var entity = {
quot: '"',
lt: '<',
gt: '>'
}; //返回deentityfity方法
return function() {
return this.replace(//&([^&;]+);/g, function(a, b) {
//如果字符串可以再映射表中找到就将其替换为映射表中的值
var r = entity[b];
return typeof r === 'string' ? r : a;
});
};
}());
document.writeln('<">'.deentityfity()); // <">

  

9 javascript缺少块级作用域,所以,最好的做法是在函数体的顶部声明函数中可能用到的变量

10 /^ $/i,我们用^和$来框定这个表达式,它指引这个正则表达式对文本中的所有字符进行匹配,如果省略了这个标识,那么只要一个字符串包含一个数字,这个正则表达式就进行匹配,但有了这些标识,只有当一个字符串的内容仅为一个数字的时候,它才会告诉我们,如果仅包含^, 它将匹配以一个数字开头的字符串,如果我们仅包含$, 则匹配以一个数字结尾的字符串。

11 (?:...)?表示一个可选的非捕获型分组

12 javascript中的糟粕

全局变量 :越少越好
作用域 :无块级作用域,在每个函数开头部分声明所有变量
自动插入分号 :因此大括号风格需使用埃及括号
Unicode :javascript字符是16位的,只能覆盖65535个字符
parseInt :增加第二个参数,明确进制,parseInt("08",10)
浮点数 :二进制浮点数不能正确的处理十进制小数,0.1+0.2不等于0.3,不过整数部分是精确的
NaN : typeof NaN === 'number' //true; NaN === NaN //false;
对象 :因为原型链的存在,javascript对象永远不会有真的空对象

《Javascript语言精粹》 读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. C 和 C++ 的速度相差多少,你知道吗?

    有谁清楚这个事实吗 ? 网络游戏速度至关重要, 是游戏质量的唯一标准, 尤其是即时格斗, 相差几毫秒都会影响用户体验 ! 哪怕就是 5% 的效率损失,也是 差之毫厘,失之千里, 游戏的速度是程序语言天 ...

  2. VS2008下直接安装Boost库1.46.1版本号

    Boost图书馆是一个移植.提供源代码C++库.作为一个备份标准库,这是C++发动机之间的一种标准化的过程. Boost图书馆由C++图书馆标准委员会工作组成员发起,一些内容有望成为下一代C++标准库 ...

  3. ubuntu系统下给你的ipad充电(适用于所有ios设备)

    用ipad的都知道,当我们的ipad插上电脑的usb端口默认是不能充电的.windows和ubuntu平台解决办法分别如下. windows平台: 安装软件 ai_charger http://eve ...

  4. lua5.1 和 5.2 关于 sequence 的定义变化,对#table取值的影响

    引子 环境 lua 5.2 a = {}   for i=1,2 do a[i] = i*3 end   a[4] = 11;   print(a[#a])   ---print 11 ------- ...

  5. Android适应方案汇总(三)

    在Android适应方案汇总(一个).(两)在.我们理解一些基本概念. 那么详细的开发,我们应该重视起来. 首先,我们需要知道.关键的事实是,这两个适配器: (1).这点在单位的使用上用dp.sp以及 ...

  6. .Net程序猿乐Android发展---(1)环境结构

    对于没有接触Android人才发展,你可能会觉得Android更难以发展.接下来的一段时间,我们将了解Android开发的详细细节,主要是面对.NET程序猿,来看看.NET程序猿如何进行Android ...

  7. poj 2408 Anagram Groups(hash)

    id=2408" target="_blank" style="">题目链接:poj 2408 Anagram Groups 题目大意:给定若干 ...

  8. 11gR2 Database Services for &quot;Policy&quot; and &quot;Administrator&quot; Managed Databases (文件 ID 1481647.1)

    In this Document   _afrLoop=1459311711568804&id=1481647.1&displayIndex=6&_afrWindowMode= ...

  9. 《Javascript权威指南》13号学习笔记:使用日期和时间

    一.创Date示例 1.Date类的方法和属性是非常不静,故,申请书Date属性和方法之前.必须创建Date类的实例. var date = new Date();  //以当前日期和时间创建实例. ...

  10. 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器

    原文:第十九章--使用资源调控器管理资源(2)--使用T-SQL配置资源调控器 前言: 在前一章已经演示了如何使用SSMS来配置资源调控器.但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展. ...