读书笔记----JavaScript 权威指南(一)
请各位读者添加一下作者的微信公众号,以后有新的文章,将在微信公众号直接推送给各位,非常感谢。
0.前言
最近小编我刚刚结束上一段的工作,结果立马就马不停蹄的开始了新一轮的工作了,表示无辜,(o´・ェ・`o),程序猿真是个累死人不偿命的工作呀。
今天晚上看到同事新启封的 JavaScript 权威指南,心血来潮的想,如果我能把这个书里面的重点以及具体知识点梳理出来,那么后来的人是不是就能少走一些弯路呢?
抱着这个想法,于是就开始了今天晚上的读书之旅,更由于小编喜欢整理东西这个习惯,才有了此文。
真心希望看到这篇文章的你,能够感受到小编那深沉的爱!~
1.JavaScript 语法核心 之 语法结构
屏幕快照 2016-07-11 22.10.51.png1.1 字符集
1.1.1 区分大小写
-
关键字,变量,函数名和所有的标示符全部采用一致的大小写形式
-
需要注意,HTML 并不区分大小,而 JavaScript 中 HTML 的一些名称或者属性名则必须是小写的
1.1.2 空格,换行符和格式控制符
-
JavaScript 中会忽略程序中的标示(token)之间的空格
-
我们的界面可以根据具体的内容而去进行具体的代码缩进,因此来保证界面的
可读性和美观
1.2 注释
支持两种格式的注释
-
在行尾之后的 “ //” 内容都可以当做 JavaScript 的注释被忽略掉
-
在 “/” 和 “/” 之间的内容也会被当做注释
- 可以跨行写
- 但是内部不能嵌套注释
1.3直接量
程序中直接使用的数据值
-
数字 12
-
小数 0.12
-
字符串文本 “hello world”
-
另一个字符串 ‘hi’
-
布尔值 true
-
另一个布尔值 false
-
正则表达式的直接量(用作模式匹配) /javascript/gi
8.空 null
9.特殊直接量
- 对象 { x:1,y:2 }
- 数组 { 1,2,3 }
1.4 标示符和保留字
标示符就是一个名字
在 JS 中,标示符用来对变量和函数进行命名,或者是用作 JavaScript 代码中某些循环语句中的跳转位置的标记
命名规范
必须以下内容作为开始
-
字母
-
下划线(_)
-
美元符($)
1.5 保留字
命名不是随意命名的,
因为程序中有一些名字已经被系统占用了.
例如
break
class
if
else
while
...
1.5 可选的分号
;可以将语句分割开,以此可以增强语句的可读性和整洁性,
但是假如没有正确的进行语句的分割,反而会造成灾难性的后果。
想象中正确的解析方式
var y = x + f
(a + b).toString()
实际的解析方式
var y = x + f(a + b).toString()
有一些老的程序员喜欢在每句话的开始就首先去打一个分号,
这样做的好处就是无论之前的一句话具体是如何操作的,
当前这句话都可以被正确的解析。
2.JavaScript 语法核心 之 类型,值,变量
2.1 JavaScript 中数据类型分为两种
三种划分方式
第一种
原始类型
数字
字符串
布尔值
特殊的原始类型
null
undefined
代表了各自特殊类型的唯一成员
对象类型
对象是属性的集合,每个属性都由 “名/值对”
值可以是原始值,如数字,字符串,也可以是对象
存在一个特殊的对象----全局对象
第二种
拥有方法的类型
不能拥有方法的类型
第三种
可变类型
对象
数组
不可变类型
数字
布尔值
null
undefined
2.2 数字
JavaScript 中不区分整数和浮点数,所有数字全部以浮点数值表示。
当一个数字直接出现在 JavaScript 程序中,我们称之为数字直接量。
2.2.1 整数直接量
十进制
100000
十六进制
0x**
0X**
八进制
不支持使用
能够通过取巧实现
0377 -> 3 * 64 + 7 * 8 + 7 = 255
2.2.2 浮点型直接量
浮点型直接量可以包含小数点
还可以使用指数计数法表示浮点型直接量
在实数后跟数字 e 或者 E
6.02e23 //6.02 * 10 ^ 23
1. 4738223E - 32 //1.4738223 * 10 ^ -32
2.2.3 JavaScript 中的算数运算
基础运算符
+
-
*
/
%
…
复杂运算符
通过 Math 对象的属性定义的函数和常量来实现
Math.round(.6) //1.0:四舍五入
Math.ceil(.6) //1.0 向上取整
Math.floor(.6) //0.0 向下取整
Math.abs(-5) //5 绝对值
Math.max(x,y,z) //返回最大值
Math.min(x,y,z) //返回最小值
Math.random() //生成一个大于0,小于 1.0 的伪随机数
Math.PI //π 3.141592673
2.2.4 JavaScript 中的算数运算的特殊情况
溢出(overflow)
运算结果超出 JavaScript 所能表示的数字上限
- 超过正的最大以 Infinity 表示
- 超过负的最大以 -Infinity 表示
下溢(underflow)
运算结果无限接近于0并且比 JavaScript 所能表示的最小值还要小的时候
- 正数返回 0
- 负数返回 -0
- 和0几乎一样,很少会用到
被零整除
正常状态下
返回 infinity 或者 - infinity
0 除以 0
无意义,会得到 NaN(not - a - number)
除此之外,无穷大除以无穷大,给负数做开方,算数运算符与不是算数运算符或无法转换为数字的操作数一起使用的时候都会返回 NaN.
这三种情况不会进行报错
2.2.5 二进制浮点数和四舍五入错误
JavaScript 中数字具有足够的精度,但是偶尔也会带来一定的问题
var x = .3 - .2; /*三十美分减去二十美分*/
var y = .2 - .1; /*二十美分减去十美分*/
x==y /*false*/
x==.1 /*false*/
y==.1 /*true*/
原因:真实运行环境下 0.3 - 0.2 = 0.09999999999999999998
2.2.6 日期和时间
JavaScript 中包含 Date()构造函数
用于创建表示日期和时间的对象
例如
var then = new Date(2011, 0, 1); //2011年1月1日
var then = new Date(2011, 0, 1,17, 10, 30); //2011年1月1日当地时间5:10:30PM
var now = new Date(); //当前日期和时间
var elapsed = now - then; //日期减法,计算时间间隔的毫秒数
later.getFullYear() //2011
later.getMonth() //从0 开始计数的月份
later.getDate() //从 1 开始计数的天数
later.getDay() //得到星期几,0表示星期日,5表示星期1
later.getHours() //当地时间
later.getUTCHours() //使用 UTC 表示小时的时间,基于时区
今天读书笔记就先写到这里,因为现在已经2016年07月11日22:36:18了,我也需要回家睡觉去了,下一篇文章更新时间不确定,反正肯定有时间就更新啦。
最后祝愿各个小伙伴工作顺利咯!~
撒泼打滚求点赞!~ 么么哒!~