2019年,新年伊始,我打算好好重读一下《JavaScript高级程序设计》这本前端必备经典书。每天半小时。

以下内容摘自《JavaScript高级程序设计》

2019-2-11

第一章 —— 第三章笔记

1.区分大小写

2.严格模式

"use strict";

ECMAScript5引入了严格模式的概念。支持严格模式的浏览器包括:IE10+,Firefox4+,Safari5.1+,Opera12+,Chrome

3.声明变量

var message = "hi";
message = 100; //有效,但不推荐

4.数据类型

  • 5种简单的数据类型:Undefined,Null,Boolean,Number,String
  • 1种复杂的数据类型:Object

5.typeof操作符

typeof可能的返回值

  • undefined——如果这个值未定义
  • boolean——如果这个值是布尔值
  • string——如果这个值是字符串
  • number——如果这个值是数值
  • object——如果这个值是对象或null
  • function——如果这个值是函数

typeof操作举例:

var message = 'hello, world';
alert(typeof message); //'string'
alert(typeof (message)); //typeof () 第二种写法,返回'string'

怪异之处:对未初始化的变量执行typeof操作符会返回undefined,而对于未声明的变量执行typeof操作符同样也会返回undefined

var message; // 这个变量声明之后默认取得了undefined值

// 下面这个变量并没有声明
// var age; alert(typeof message); //"undefined"
alert(typeof age); //"undefined"

6.null类型:表示一个空指针对象

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

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。

7.Boolean类型

  • 转型函数 Boolean()
  • 流控制语句(如if语句)自动执行相应的Boolean转换

8.Number类型

  • 八进制字面值得第一位必须是零
  • 十六进制字面值的前两位必须是0x
var intNum = 55; //整数

var octalNum1 = 070;  //八进制的56
var octalNum2 = 079; //无效的八进制数值——解析为79
var octalNum3 = 08; //无效的八进制数值——解析为8 var hexNum1 = 0xA; //十六进制的10
var hexNum2 = 0x1f; //十六进制的31

9. 和ES6对比一下,看看有什么改变

以下内容摘自阮一峰《ES6标准入门》第六章 数值的扩展

从ES5开始,在严格模式中,八进制数值就不再允许使用前缀0表示,ES6进一步明确,要使用前缀0o表示

ES6提供了二进制和八进制数值的新写法,分别用前缀0b(或0B),0o(或0O)

0b111110111 === 503
0o767 === 503

把数值转为十进制数值的方法:Number()

举例:

Number('0b111') //
Number('0o10') //

10.浮点数值

由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值。例如:

var floatNum1 = 1.; //小数点后面没有数字——解析为1
var floatNum2 = 10.0; //整数——解析为10

11.科学计数法(e表示法)

var floatNum = 3.125e7; //3.125乘以10^7 等于31250000

12.浮点数值计算误差

console.log(0.1 + 0.2); //0.30000000000000004

13.浮点数值计算误差检查函数

ES6在Number对象上新增了一个极小的常量——Number.EPSILON

function withinErrorMargin (left, right) {
return Math.abs(left - right) < Number.EPSILON
} withinErrorMargin(0.1 + 0.2, 0.3); //true
withinErrorMargin(0.2 + 0.2, 0.3); //false

《JavaScript高级程序设计》笔记——第一章到第三章的更多相关文章

  1. JavaScript高级程序设计(第3版)每章小结(1-5)

    第一章 JavaScript的简介 第二章 在HTML中使用JavaScript 把JavaScript插入到HTML页面中要使用<Script>元素.使用这个元素可以把JavaScrip ...

  2. JavaScript高级程序设计笔记(一)

    ---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...

  3. 《JavaScript高级程序设计》——第一章JavaScript简介

    第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...

  4. 《JAVASCRIPT高级程序设计》第一章

    在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...

  5. 《JavaScript 高级程序设计》第一章:简介

    JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...

  6. JavaScript高级程序设计:第一章

    JavaScript简介: 1.JavaScript实现应该由以下三部分组成: (1)核心:ECMAScript (2)文档对象模型:DOM (3)浏览器对象模型:BOM 2.什么是ECMAScrip ...

  7. Javascript高级程序设计笔记 <第五章> 引用类型

    一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...

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

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

  9. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...

  10. JavaScript高级程序设计笔记之面向对象

    说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...

随机推荐

  1. CRSF Defense Using Content Injection Support By ModSecurity

    The most advanced and imaginative use of the content injection feature is that devised byRyan C. Bar ...

  2. 分享一个css3学习使用的选择器手册

    http://www.haorooms.com/tools/css_selecter/

  3. Kinect 开发 —— 姿势识别

    姿势和手势通常会混淆,但是他们是两个不同的概念.当一个人摆一个姿势时,他会保持身体的位置和样子一段时间.但是手势包含有动作,例如用户通过手势在触摸屏上,放大图片等操作. 通常,游戏者很容易模仿指定姿势 ...

  4. AJAX与XMLHttpRequest

    XMLHttpRequest: 中文可以解释为可扩展超文本传输请求.Xml可扩展标记语言,Http超文本传输协议,Request请求.XMLHttpRequest对象可以在不向服务器提交整个页面的情况 ...

  5. Linux下的一个高速跳转到上N层文件夹的简单方法

    编辑文件 vim .bashrc  (使改动在当前用户下有效) 或者 vim /etc/profile (须要在root用户下运行,使改动在全部用户下有效) 在文件结尾加入别名 alias cd1=' ...

  6. Hadoop作业性能指标及參数调优实例 (二)Hadoop作业性能调优7个建议

    作者:Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Hado ...

  7. Python实现的基于ADB的Android远程工具

    本工具为原创,涉及知识: - Python编程 - Tkinter GUI编程 - ADB通信机制 代码已经开源: https://code.csdn.net/codehat/andev/tree/m ...

  8. POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)

    Tree Summing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8132   Accepted: 1949 Desc ...

  9. Onvif开发之Linux下gsoap的使用及移植

    一直以来都是在CSDN上面学习别人的东西,很多次想写点什么但是又无从写起.由于公司项目需要,最近一段时间在研究onvif,在网上找了很多资料,发现资料是非常多,但是很少有比较全的资料,或者资料太多无从 ...

  10. IAR for STM8介绍、下载、安装与注册--转

    Ⅰ.写在前面 本文讲述的内容是IAR for STM8的介绍.下载.安装与注册,其安装.注册过程和IAR for ARM类似,如果需要了解IAR for ARM相关的文章,可以到我博客,或微信公众号查 ...