总结红皮书JavaScript高级程序设计的精髓知识点,感谢红皮书原作者Nicholas C. Zakas


和博主一起走入JavaScript界的圣经,红皮书,JavaScript高级程序设计第三版。
我们尽量用最短的时间读完这本书,并且总结出整书的精华知识点。go!

2.1.defer和async属性

defer:

表示脚本可以延迟到文档完全被解析和显示之后再执行,只对外部脚本文件有效。 相当于告诉浏览器立即下载,但延迟执行。

async:

表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
异步脚本并不保证按照指定它们的先后顺序执行,一定会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行。

换言之,
只要不存在defer和async属性,浏览器都会按照<script>元素在页面中出现的先后顺序对它们依次进行解析。

2.2.<script>标签的位置

JavaScript代码放在<body>的最后,先呈现浏览器的内容,因为浏览器在遇到body标签时才开始呈现内容。

2.3.CDATA片段

指不应被XML解析器进行解析的文本数据。

2.4.外部js的优势

  • 可维护性
  • 可缓存(两个页面引入一个js只需下载一次)
  • 适应未来

2.5.<noscript>元素

  • 浏览器不支持脚本
  • 浏览器支持脚本但脚本被禁用
    满足以上任一条件,浏览器会显示的内容。

原书第二章小结在此


基本和博主总结的一致。下面我们进军第三章

3.1区分大小写

ECMAScript中一切区分大小写,也就是说Baby和baby是代表两个宝贝。

3.2标识符第一个字符不能是数字

第一个字符:必须是一个字母,下划线或一个$
其他字符:上面的,数字

3.3驼峰命名规则

myHouse
yourBaby
iLoveYou
第一个字母小写,遇到一个单词大写

3.4注释

单行 :

 //xxx

多行:

 /****/

3.5严格模式

"use strict";

可在:

  1. 整个脚本代码中启用严格模式
  2. 也可以在某个函数体内启用严格模式

3.6没有分号和大括号也可运行,但是不建议!!!!

可能导致:

程序判断结束耗费不必要的性能
压缩代码多余空格时报错等

3.7关键字

这就是即使不是数字开头也不能命名标识符的大佬们

✳为ECMA5新增

3.8保留字

尽管没有用途,但是以后可能会有用途,也不让你随便用,懂?


第三版定义了如上的保留字,但是第五版增加了两个新的保留字letyield

3.9var-var-var

var应该是JavaScript里用的最多的一个字符了,他有资格被写三遍在这里。

var定义的是局部变量

如果在函数中定义一个var则,这个变量在函数推出后就会被销毁。
例如:

function(){var abc="hi";//局部变量
}
test();
alert(message);//错误

可以省略var 则,abc则是全局变量,
但是不建议如此操作为生命的变量,在严格模式下会抛出ReferenceError

3.10JavaScript 的五种数据类型

这应该是大家背的最熟的了,反正我能被出来
Undefined,Null,Boolean,Number,String
还有更酷一点的,复杂的Object,本质上是由一组无序的名值对组成的。

3.11typeof操作符

ok只有六种数据类型,能表示出这么多种JavaScript的数据吗?
所以应运而生的typeof(我用typeof好好看看不就得了)

  • 如果是函数 -“function”,如果是除了Null的其他结构也是可以直接输出相应的

如果是其他也能测:

var abc=“some string”;
alert(typeof message);//"string"
alert(typeof 17);//"number"

如果typeof Null

what happen?

会返回object
因为特殊值null被认为是一个空的对象的引用

3.12细说几种数据类型

3.12.1 Undefined

只有一个值,undefined 。
在var 只声明未赋值时,这个变量的值就是undefined

var abc;
aleret(abc==undefined);//true

3.12.2Null

var car = null;
alert(typeof car);     // "object"

null类型也是只有一个值的数据类型,null
null表示一个空对象指针。
对于将来想要用于保存对象的变量,初始赋值设为null。

3.12.3Boolean类型

两个字面值,true false
这两个值与数字值不是一回事,因此true不一定等于1,二false也不一定等于0。

记得区分大小写,True 不是Boolean类型

其他数据类型与布尔类型的联动:

数据类型 转换为true的值 转换为false的值
boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数字 0和NaN
Object 任何对象 null
Undefined n/a(not applicable缩写(不适用)) undefined

3.12.4Number类型

整数

可以赋值为十进制,八进制,十六进制

但是,进行算术运算时,所有八进制,十六进制表示的数值最终都将被转换成十进制数值。

浮点数

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

浮点数值的高精度是 17位小数,但在进行算术计算时其精确度远远不如整数。

例如,0.1加 0.2 的结果不是 0.3,而是 0.30000000000000004。这个小小的舍入误差会导致无法测试特定的浮点数值。

所以不要不要不要这样测试:

if (a + b == 0.3){          // 不要做这样的测试!   alert("You got 0.3."); }

NaN

即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数 未返回数值的情况(这样就不会抛出错误了)

NaN 本身有两个非同寻常的特点。首先,任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN,这 个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括 NaN 本身.

关于isNaN()

数值转换

有 3个函数可以把非数值转换为数值:Number()、parseInt()和 parseFloat()。

var num1 = parseInt("10", 2);     //2  (按二进制解析)
var num2 = parseInt("10", 8);      //8  (按八进制解析)
var num3 = parseInt("10", 10);     //10 (按十进制解析)
var num4 = parseInt("10", 16);     //16 (按十六进制解析)
 var num1 = parseFloat("1234blue");        //1234 (整数) var num2 = parseFloat("0xA");              //0 var num3 = parseFloat("22.5");             //22.5 var num4 = parseFloat("22.34.5");          //22.34 var num5 = parseFloat("0908.5");          //908.5 var num6 = parseFloat("3.125e7");          //31250000

已经凌晨两点了,读不动了,明天醒了继续,争取尽快搞定这本红皮书。
晚安。

通读JavaScript红皮书(第二三章)相关推荐

  1. 《高性能JavaScript》第三章 DOM编程

    3.1 浏览器中的DOM 文档对象模型(DOM)是一个独立于语言的,用于操作XML和HTML文档操作的程序接口(API).在浏览器中,主要用来与HTML文档打交道,同样也用在Web程序中获取XML文档 ...

  2. 山海演武传·黄道·第二卷 大风起兮 第二 ~ 三章 傲娇的赤龙皇女

    「九龙城」,赤龙帝国皇城,位于「龙朝」中心地带. 始建于青龙王朝统治时期的九龙城,本是防御黑犼入侵的北方军事要塞.长期以来,它一直肩负有守护帝国西北大门,阻止北方蛮族与魔族入侵的艰巨使命,而并非作为宫 ...

  3. 【JavaScript】第三章 原型与原型链

    如何准确判断一个变量是数组类型 写一个原型链继承的例子 描述new一个对象的过程 zepto(或其他框架)源码中如何使用原型链 构造函数 构造函数首字母大写 构造函数类似于模板 new一个构造函数,返 ...

  4. 深入浅出统计学 第二三章 量度

    量度 两类量度: (1) 集中趋势的量度->平均值,中位数,众数 (2) 分散性与变异性的亮度->全距(极值),四分位数(扩展:箱型图),方差与标准差,标准分 获取数据 import pa ...

  5. JavaScript基础——第三章,JavaScript操作DOM对象

    JavaScript操作DOM对象 DOM:Document Object Model (文档对象模型) 节点和节点的关系 访问节点 使用getElement系列方法访问指定节点 根据层次关系访问节点 ...

  6. WebAssembly第三章 JavaScript调用C\C++ 关键字:wasm emcc js c++ c

    系列文章目录 第一章 WebAssembly概念 第二章 Emscripten详解 第三章 JavaScript调用C\C++ 第四章 C\C++调用JavaScript WebAssembly第三章 ...

  7. C++ Primer Plus 第四(二,三)章答案 复合类型

    复习题 第二三章只做了几个题,从第四章开始都做了. 代码全都是编译运行通过了的 practice 2.7.7(第二章编程练习第七题) #include <iostream>using na ...

  8. JavaScript Dom编程艺术(第二版)读书笔记 第三章DOM

    第三章DOM 3.1文档中的DOM的"D" 如果没有document(文档),DOM也就无从谈起.当创建了一个网页并把它加载到Web浏览器中时,Dom就在幕后悄然而生.它把你编写的 ...

  9. “JavaScript patterns”中译本 - 《JavaScript 模式》第三章

    第三章 直接量和构造函数 JavaScript中的直接量模式更加简洁.富有表现力,且在定义对象时不容易出错.本章将对直接量展开讨论,包括对象.数组和正则表达式直接量,以及为什么要使用等价的内置构造器函 ...

最新文章

  1. python入门爬虫知识点
  2. 凯文·凯利:未来很美好,今天仍是Day1
  3. Oracle访问远程服务器的数据库
  4. python dlib学习(五):比对人脸
  5. 成功解决Exception “unhandled ImportError“cannot import name ‘imread‘ from ‘scipy.misc‘
  6. s6-9 TCP 定时器
  7. Android 第六课 4种基本布局之LinearLayout和Relativelayout
  8. 看美国如何实现农业大数据的建设
  9. Educoder Basemap和Seaborn 第一关:Seaborn
  10. 《硅谷钢铁侠的跨界传奇-埃隆马斯克传》阅读笔记
  11. 微信小程序弹窗禁止页面滚动
  12. android中桌面倒计时,android 倒计时显示
  13. 品牌故事对于品牌发展的重要性
  14. python爬虫初试-下载LOL全英雄皮肤
  15. 安卓修改电池容量教程_图吧小白教程 篇三十二:手机拆换原装电池教程——替换寿命将届的原厂电池,提升手机续航...
  16. 使用大白菜装机维护版软件取消Win7开机密码
  17. Spark核心编程系列(一)——RDD详解
  18. MySQL查询日期为一年第几天第几周,天数周数反查日期
  19. Java 求最大公约数
  20. 003.小插曲之变量和字符串

热门文章

  1. prometheus+grafana简介与linux下的安装
  2. 基于Matlab的载波同步建模与仿真(科斯塔斯环)
  3. python运行调出控制台_python控制台怎么打开
  4. mysql 删除时间一个星期_2020春招必备:MySQL(20)与Redis(20),不看答案能答对几道?
  5. Html5 Egret游戏开发 成语大挑战(四)选关界面
  6. TP-LINK TL-WDN7200H ubuntu18.04驱动安装
  7. 商业虚拟专用网络技术十四 BGP/MPLS技术扩展
  8. 计算机专业除了当码农,还有什么好的就业方向?
  9. 电脑显示没有wifi连接到服务器地址,WIFI无ip分配怎么解决
  10. 红帽8RHCSA考试真题,今天300分已过(2022最新版)