《JavaScript高级程序设计》笔记——第一章到第三章
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高级程序设计》笔记——第一章到第三章的更多相关文章
- JavaScript高级程序设计(第3版)每章小结(1-5)
第一章 JavaScript的简介 第二章 在HTML中使用JavaScript 把JavaScript插入到HTML页面中要使用<Script>元素.使用这个元素可以把JavaScrip ...
- JavaScript高级程序设计笔记(一)
---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...
- 《JavaScript高级程序设计》——第一章JavaScript简介
第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...
- 《JAVASCRIPT高级程序设计》第一章
在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...
- 《JavaScript 高级程序设计》第一章:简介
JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...
- JavaScript高级程序设计:第一章
JavaScript简介: 1.JavaScript实现应该由以下三部分组成: (1)核心:ECMAScript (2)文档对象模型:DOM (3)浏览器对象模型:BOM 2.什么是ECMAScrip ...
- Javascript高级程序设计笔记 <第五章> 引用类型
一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...
- JavaScript高级程序设计笔记之面向对象
说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...
随机推荐
- 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 ...
- 分享一个css3学习使用的选择器手册
http://www.haorooms.com/tools/css_selecter/
- Kinect 开发 —— 姿势识别
姿势和手势通常会混淆,但是他们是两个不同的概念.当一个人摆一个姿势时,他会保持身体的位置和样子一段时间.但是手势包含有动作,例如用户通过手势在触摸屏上,放大图片等操作. 通常,游戏者很容易模仿指定姿势 ...
- AJAX与XMLHttpRequest
XMLHttpRequest: 中文可以解释为可扩展超文本传输请求.Xml可扩展标记语言,Http超文本传输协议,Request请求.XMLHttpRequest对象可以在不向服务器提交整个页面的情况 ...
- Linux下的一个高速跳转到上N层文件夹的简单方法
编辑文件 vim .bashrc (使改动在当前用户下有效) 或者 vim /etc/profile (须要在root用户下运行,使改动在全部用户下有效) 在文件结尾加入别名 alias cd1=' ...
- Hadoop作业性能指标及參数调优实例 (二)Hadoop作业性能调优7个建议
作者:Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Hado ...
- Python实现的基于ADB的Android远程工具
本工具为原创,涉及知识: - Python编程 - Tkinter GUI编程 - ADB通信机制 代码已经开源: https://code.csdn.net/codehat/andev/tree/m ...
- POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)
Tree Summing Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8132 Accepted: 1949 Desc ...
- Onvif开发之Linux下gsoap的使用及移植
一直以来都是在CSDN上面学习别人的东西,很多次想写点什么但是又无从写起.由于公司项目需要,最近一段时间在研究onvif,在网上找了很多资料,发现资料是非常多,但是很少有比较全的资料,或者资料太多无从 ...
- IAR for STM8介绍、下载、安装与注册--转
Ⅰ.写在前面 本文讲述的内容是IAR for STM8的介绍.下载.安装与注册,其安装.注册过程和IAR for ARM类似,如果需要了解IAR for ARM相关的文章,可以到我博客,或微信公众号查 ...