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. 将Firefox设置为使用远程DNS

    将Firefox设置为使用远程DNS 原文 https://www.my-proxy.com/blog/firefox-remote-dns 测试当前在用DNS              https: ...

  2. sql server 怎样用select语句调用自定义表值函数

    --自定义函数的参数是表的字段,这种情况要用cross apply啦Select B.* FROM [master].[dbo].[分列测试] A cross apply dbo.f_split(应用 ...

  3. HDU 6153 A Secret

    A Secret Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 256000/256000 K (Java/Others)Total ...

  4. qrcode length overflow 生成二维码网址长度溢出解决办法

    QRCode.js is javascript library for making QRCode. QRCode.js supports Cross-browser with HTML5 Canva ...

  5. groups---输出指定用户所在组的组成员,

    groups命令   groups命令在标准输入输出上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组. 语法 groups(选项)( ...

  6. 今日SGU 5.5

    SGU 114 题意:求一个点到其他点的距离总和最小,距离的定义是x轴距离乘以那个点的人数p 收获:带权中位数,按坐标排序,然后扫一遍,最后权值超过或等于总权值的一半时的那个点就是答案,证明暂无 #i ...

  7. 解决xorm逆向mssql报datetime2不兼容的异常错误

    xorm作为golang开发者的一大利器,深受大家的喜爱,可是最近在逆向mssql的时候,报了这么一个错误: 最后找了半天发现xorm没有预置DateTime2类型,经过几番折腾,在xorm源码的en ...

  8. BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Treap

    题意:链接 方法: Treap 解析: 前几道资格赛的题水的不行,这道Gold的题就够分量辣. 首先这个曼哈顿距离啥的肯定能做文章,怎么转化是个问题,自己玩了一会没玩出来,就查了查曼哈顿距离的转化,发 ...

  9. cocoapod卡在了analyzing dependencies

    尽管公司的项目没有使用cocoapod,可是有一些第三方库本身依赖其它第三方的库,而且是用cocoapod来管理这些依赖的.所以在使用某些第三方库时.还是须要用到cocoapod的.今天在github ...

  10. scrapy爬取知乎某个问题下的所有图片

    前言: 1.仅仅是想下载图片,别人上传的图片也是没有版权的,下载来可以自己欣赏做手机背景但不商用 2.由于爬虫周期的问题,这个代码写于2019.02.13 1.关于知乎爬虫 网上能访问到的理论上都能爬 ...