《JavaScript权威指南》真是名符其实的好书!真遗憾初学JavaScript时没有当即读这本书,甚为遗憾。不太小有经验以后读来更是有如醍醐灌顶通常,许多以前遇到的奇怪问题和读不懂的代码都迎刃而解。这里简要记录一下其中以为很有价值的一些知识点。不过真心要学好JavaScript的同窗仍是耐心读彻底书吧,虽然这本书900多页,厚得使人生畏,但真的读来不遗憾,很是有意义。 javascript
第一篇笔记的内容主要涉及:关键字、特殊值、数据类型及转换等。 html
1. javascript区分大小写,xhtml也区分大小写,可是html不区分大小写。(因此说html不够严格嘛~) java
2. javascript保留字、ECMA扩展保留的关键字、javascript预约义的全局变量名或函数名: 数组
这几个知识点特别容易弄混。我我的的理解是: 函数
- javascript保留字:真正意义上的保留字(关键字)
- ECMA扩展保留的关键字:结合java、C++等面向对象语言的思路,未来有可能新加入的关键字
- javascript预约义的全局变量名或函数名:javascript语言中提供的有用的经常使用的变量和函数
这几个知识点通常是按照字母顺序给出,但我以为有时候不容易记住,因此按它们的功能进行了小归类: this
(1)javascript保留字 编码
- if分支语句:if, else
- switch分支语句:switch, case, default, break
- 循环语句:do, while, for, continue
- 异常处理语句:try, catch, finally, throw
- 获取类型:typeof, instanceof
- 布尔值:true, false, null
- 函数相关:var, void, function, return
- 其余:in, this, with, new, delete
(2)ECMA扩展保留的关键字 spa
- 基本数据类型:byte, char, boolean, int, short, long, float, double, enum
- 继承:implements, extends, super
- 类与接口:class, interface
- 用来修饰函数的关键字:abstract, native, static, final, const, volatile, synchronized
- 导入导出:export, import
- 访问权限:private, protected, public
- 其余:goto, package, throws, transient, debugger
(3)javascript预约义的全局变量名或函数名 .net
- 数据类型:Number, Boolean, String, undefined, Object, Array, Function, Date, Math, RegExp, Error
- 错误类型:EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
- 编码:decodeURI, decodeURIComponent, encodeURI
- 转义:escape, unescape
- 类型转换:parentInt, parentFloat
- 特殊值及判断:isFinite, isNaN, NaN, Infinity
- 其余:arguments, eval
最后注意:咱们经常使用的函数alert()不属于上面的三类。 debug
3. javascript数据类型:
- 基本数据类型:
- 数字:
- 整型直接量
- 八进制和十六进制的直接量
- 浮点型直接量(小数点和指数计数法两种方式)
- 特殊值
- 文本字符串:由Unicode字符、数字、标点符号等组成的序列
- 布尔值
- 小数据类型:null, undefined
- 复合数据类型:对象:已命名的数据的集合,这些数据被做为对象的属性(或域)来引用
- 已命名的值的无序集合
- 数组:有编号的值的有序集合
- 函数:具备可执行代码的对象
- 专用对象:对象的新的类:Date, Math, Error, RegExp
4. 数字中的特殊值:
- Infinity:表示无穷大的特殊值
- NaN:特殊的非数字值(产生未定义的结果或错误时出现,如除0)
- Number.MAX_VALUE:可表示的最大数字
- Number.MIN_VALUE:可表示的最小数字(与0最接近的数字)
- Number.NaN:特殊的非数字值
- Number.POSITIVE_INFINITY:表示正无穷大的特殊值
- Number.NEGATIVE_INFINITY:表示负无穷大的特殊值
注意:NaN和任何数值都不相等,包括它本身在内,所以须要用isNaN()来检测。isFinite()用来检测一个数字是不是NaN、正无穷大或负无穷大。
5. javascript字符串经常使用函数:
- .length:长度
- .charAt(a):取得第a个字符(从0开始)
- .subString(a, b):取得下标为a到下标为b-1的子字符串
- .indexOf('a'):查找第一个字母'a'的位置
6. javascript各种型相互转换的对应值:
(1)undefined与其余类型转换:
- 布尔环境下:false
- 数字环境下:NaN
- 字符串环境下:undefined
- 对象环境下:Error
(2)null与其余类型转换:
- 布尔环境下:false
- 数字环境下:0
- 字符串环境下:null
- 对象环境下:Error
(3)布尔类型(true和false):
- 数字环境下:true为1,false为0
- 字符串环境下:true为"true",false为"false"
- 对象环境下:Boolean对象
(4)字符串(非空字符串与空字符串):
- 布尔环境下:非空为true,空为false
- 数字环境下:非空为字符串的数字值或NaN,空为0
- 对象环境下:String对象
(5)数字(Number对象:0、NaN、无穷、负无穷、任意其余数字):
- 布尔环境下:0和NaN时为false,无穷、负无穷和其余任意数字时为true
- 字符串环境下:0为"0",NaN为"NaN",无穷为"Infinity",负无穷为 "-Infinity",其余任意数字就是该数字字符串值
(6)其余对象:
- 布尔环境下:非空对象为true
- 数字环境下:空对象则为NaN,调用valueOf()方法若返回基本类型则使用该值,若返回对象本身则先调用toString()方法把对象转换为一个字符串,再把该字符串转换为一个数字
- 字符串环境下:调用toString()方法返回字符串的值
下一篇连接:《JavaScript权威指南》笔记(二)