第二章 语法结构
2.1 字符集
什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系?
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Characterset)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。http://baike.sogou.com/v291629.htm
各种字符集的出现时为了满足不同地区,不同语言,不同环境的使用。
http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html这个连接详细写了字符集和字符编码方式。
Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案。
2.11 大小写
前端中,html是不区分大小写的,但是js是区分大小写的,也就是说,关键字,变量,函数名和所有的标识符都必须采用一致的大小写形式。
2.12 空格,换行符和格式控制符
token:前几节课snl汇报的时候说到token当时第一次听说,后来查了一下,暂时理解为一种口令式的字符串。常用于session验证或者其他的验证,就是附加在主要信息的一段字符,达到验证的目的。
js中会自动忽略所有的空格和换行,这样编码的时候可以缩进。
2.13 unicode转义序列
在有些计算机硬件和软件里,无法显示或输入Unicode字符全集。为了支持那些使用老旧技术的程序员,JavaScript定义了一种特殊序列,使用6个ASCII字符来代表任意16位Unicode内码。这些Unicode转义序列均以\u为前缀,其后跟随4个十六进制数(使用数字以及大写或小写的字母A~F表示)。这种Unicode转义写法可以用在JavaScript字符串直接量、正则表达式直接量和标识符中(关键字除外)。例如,字符é的Unicode转义写法为\u00E9,如下两个JavaScript字符串是完全一样的:
"café" === "caf\u00e9" // => true
Unicode转义写法也可以出现在注释中,但由于JavaScript会将注释忽略,它们只是被当成上下文中的ASCII字符处理,而且并不会被解析为其对应的Unicode字符。
2.2 注释
JavaScript支持两种格式的注释。在行尾“//”之后的文本都会被JavaScript当做注释忽略掉的。此外,“/*”和“*/”之间的文本也会当做注释,这种注释可以跨行书写,但不能有嵌套的注释。
var a = null;//a是变量 var a = null; /* a是变量 */
养成良好的注释习惯是一个程序员必备的素质之一,单行注释前边空格,多行变量开始行和结束行没有注释内容,中间每注释一条都以*开头,切注意缩进。如下
/* * a是变量 */
2.3 直接量
所谓直接量,就是在程序中直接使用的数据值,包括数字、字符串、布尔值、表达式,数组和对象等。http://www.cnblogs.com/coolicer/archive/2010/10/14/1851173.html
2.4 标识符和保留字
在JavaScript中,标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。JavaScript标识符必须以字母、下划线(_),$开头,后续可以是字母、数字、$、_,(数字是不允许作为首字母出现的,以便于区分数字和标识符)
出于可移植性和易于书写的考虑,通常我们只使用ASCII字母和数字来书写标识符。然而需要注意的是,JavaScript允许标识符中出现Unicode字符全集中的字母和数字。(从技术上讲,ECMAScript标准也允许在标识符的首字符后面出现Unicode字符集中的Mn类、Mc类和Pc类译注7)。由此,程序员也可以使用非英语语言或数学符号来书写标识符:
var sí = true; var π = 3.14;
保留字。JavaScript把一些标识符拿出来用做自己的关键字。因此,就不能再在程序中把这些关键字用做标识符了:
break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try
这里面值得注意的是:this,用_this代替,new,do,continue,delete,debugger等容易出错。直接定义会报错:Unexpected token
http://book.51cto.com/art/201206/343060.htm关于其他的保留字介绍。
2.5 可选的分号
js中分号是可以省略的,解析的时候会自动填补。换行读取解析的原则是:如果当前语句和随后的非空格字符不能当成一个整体来解析的话,JavaScript就在当前语句行结束处填补分号。
下面几个特殊注意的:
1,如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。以“/”、“+”和“-”开始的语句并不常见,而以“(”和“[”开始的语句则非常常见,至少在一些JavaScript编码风格中是很普遍的。有些程序员喜欢保守地在语句前加上一个分号,这样哪怕之前的语句被修改了、分号被误删除了,当前语句还是会正确地解析
2,两个例外:
第一个例外是在涉及return、break和continue语句(参见第5章)的场景中。如果这三个关键字后紧跟着换行,JavaScript则会在换行处填补分号。例如,这段代码:
-
- return
- true;
第二个例外是在涉及“++”和“--”运算符(见4.8节)的时候。这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析,例如,这段代码:
-
- x
- ++
- y
这段代码将解析为“x; ++y”,而不是“x++; y”。