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. Android自己定义动态布局 — 多图片上传

    Android自己定义动态布局 - 多图片上传 本文介绍Android中动态布局加入图片,多图片上传. 项目中效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...

  2. jquery18 css() : 样式的操作

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. Android学习笔记进阶18 之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  4. logback 生成日志

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender ...

  5. 如何优雅的写UI——(4)选项卡美化

    现在做出来的选项卡实在太丑的,咱们怎么把他弄得好看一点呢 tabctrl是可以添加icon图标的,那派生与tabctrl的mfctabctrl肯定也能添加图标,他们两个添加图标的原理一样,但是还是有点 ...

  6. Dubbo学习总结(3)——Dubbo-Admin管理平台和Zookeeper注册中心的搭建

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  7. Android ImageView设置图片原理(上)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 首先关于图片加载到ImageView上,我们来讨论几个问题: 如下: imageView.setIm ...

  8. apache2 虚拟机多用户多站点设置 mpm-itk

    MPM设置 https://bbs.csdn.net/topics/390479795/ vim /opt/lampp/etc/extra/httpd-ssl.conf vim /opt/lampp/ ...

  9. values-dimen 不同分辨率资源实现引用

    今天遇到了一种情况,就是在不同分辨率下面出现了需要设定不同的距离,当时第一反映就是重新定义一个layout.但是,仅仅为了更改一个数值就复制那么多的代码,明显不合里.后来就想到干脆在不同的分辨率下创建 ...

  10. C#调用C++生成的动态链接库DLL

    一.背景 由于要使用C#写app,所以要把C++生成的DLL在C#中调用,所以就涉及怎样去调用外部的dll问题. 二.C#调用外部DLL 首先先看下C#调用外部DLL的代码 using System. ...