javascript语言精粹读书笔记——第二章
书中用铁路图来描述语法
特意看了维基百科的连接,总结下Syntax_diagram的规则:
- 从左边开始,沿着轨道到右边界
- 沿途在圆框中遇到的是字面量,方框中遇到的是规则和描述
- 沿着轨道能走通的都是合法的
- 任何沿着轨道不能走通的都是非法的
- 末端有一条竖线的标示允许在任意一对符号中间插入空白,而在末端有两个竖条不允许。
在维基百科的连接:http://en.wikipedia.org/wiki/Syntax_diagram
关于注释:/* */存在一些安全隐患建议使用//注释
开头字母,后面跟字母、数字、下划线,不能使用保留字
只有一个数字类型。在内部表示为64位浮点数。没有分理出整型,so 1和1.0的值是相同的
指数的表示100表示为1e2
NaN是一个数值,表示一个不能产生正常结果的运算,可以用函数isNaN(number)来检测NaN
数字拥有方法。javascript有一个对象Math,它包含一套作用于数字的方法。
例如:Math.floor(number)把一个数字转换成整数
javascript中所有的字符都是16位的,被包含在一对“”或‘’之间,可能包括0个或多个字符。
\代表转义字符,它允许正常情况下不被允许的字符集插入到字符串
例如:\u约定用来指定数字字符编码“A” === “\u0041”? \b backspace \n newline
有length属性“seven”.length 是5
可以用+运算符连接字符串,来创建新字符串
字符串也有方法例如:‘cat’.toUpperCase() === 'CAT'
var 语句被用在函数内部时,它定义的是函数的私有变量
switch,while,for,do允许有一个可选的前置标签(label)它配合break使用
语句通常按照从上到下的顺序执行,javascript可以通过条件语句(if 和switch)、循环语句(while,for,do)、强制跳转语句(break、return、throw)和函数调用来改变执行顺序
代码块是包含在{}中的一组语句,javascript的代码块不会新建作用域,因此变量应该定义在函数的头部下面的值被当做假:
false
null
undefined
‘’
0
NaN
其他都是真,包括true、‘false’,以及所有的对象
for语句有两种形式
第一种由三个可选从句控制:初始化从句(initialization)、条件从句(condition)、增量从句(increment)
执行顺序:首先执行condition,他的作用通常是初始化循环变量,接着计算condition的值,如果condition被省略掉,则假定返回的是真。如果condition为假终止循环。否则,执行代码,然后执行increment,接着重复执行condition
另一种形式(for in)会枚举一个对象的所有属性名(或键名)。在每次循环中,object的下一个属性名字符串被赋值给variable。
通常要检测object.hasOwnProperty(variable)来确定属性名是该对象的成员,还是来自于原型链
try、catch、throw
try语句执行一个代码块,并捕获该代码块抛出的任何异常。catch从句定义一个新的variable来接收抛出的异常对象。
throw语句抛出一个异常,如果throw语句在一个try代码块中,那么控制流会跳转到catch从句中。
如果throw语句在函数中,则该函数调用被放弃,控制流跳转到调用该函数的try语句的catch从句
?
throw语句中的表达式通常是一个对象字面量,他包含一个name属性和一个message属性。异常捕获器可以根据这些信息决定该做什么。