JavaScript权威指南 第二章 词法结构

编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序。作为语法的基础,它规定诸如变量名是什么样的、怎样写注释,以及程序语句之间如何分隔等规则。

2.1 、字符集

JavaScript程序使用Unicode字符集编写的。

Unicode是ASCII和Lantin-1的超集,并支持地球上几乎所有的语言。ECMAScript 3 要求JavaScript的实现必须支持Unicode2.1及后续版本,ECMAScript 5则要求支持Unicode3及后续版本。

2.1.1、区分打小写

JavaScript是区分大小写的语言。

需要注意,HTML并不区分大小写(尽管XHTML区分大小写)。由于它和客户端JavaScript联系紧密,因此这点区别很容易混淆。许多客户端JavaScript对象和属性与它们表示的HTML标签和属性同名。在HTML中,这些标签和属性名可以使用大写也可以使用小写。而JavaScript中则必须是小写。

2.1.2、空格、换行符和格式控制符

JavaScript会忽略程序中标示之间的空格,多数情况下,它同样会忽略换行符。

除了可以识别普通的空格符(\u0020),JavaScript还可以识别如下这些表示空格的字符:水平制表符(\u0009)、垂直制表符(\u000B)、换页符(\u000C)、不中断空白(\u00A0)、字节序标记(\uFEFF)、以及Unicode中所有Zs类别的字符。

JavaScript将如下字符识别为行结束符:换行符(\u000A),回车符(\u000D),行分隔符(\u2028),段分隔符(\u2029)。回车符加换行符在一起被解析为一个单行结束符。

2.1.3、Unicode转义序列

Unicode转义序列均以\u为前缀,其后跟随4个十六进制数。

2.1.4、标准化

Unicode允许使用多种方法对同一个字符进行编码。Unicode标准为所有字符定义了一个首先的编码格式,并给出了一个标准化的处理方式将文本转化为一个适合比较的标准格式,JavaScript会人为它正在解析的程序代码已经是这种标准格式,不会再对其标示符、字符串或正则表达式作标准化处理。

2.2、注释

Javascript支持两种格式的注释。再行尾"//"之后的文本都会被JavaScript当做注释忽略掉的。此外,在”/*“和"*/"之间的文本也会当做注释,这种注释可以跨行书写,但不能由嵌套的注释。

下面都是合法的JavaScript注释:

// 这里是单行注释

/*这里是一段注释*/  //这里是另一段注释

/*

*这又是一段注释

*这里的注释可以连续写多行

*/

2.3 直接变量

所谓直接量(literal),就是程序中直接使用的数据值。下面列出的都是直接量:

12                                                                    //数字

1.2                                                                   //小数

"hello world"                                                  //字符串

'Hi'                                                                    //另一个字符串

true                                                                  //布尔值

false                                                                //另一个布尔值

/javascript/gi                                                   //正则表达式直接量(用做模式匹配)

null                                                                   //空

2.4、标识符和保留字

2.4.1、标识符

JavaScript标识符必须以字母、下划线或美元开始,后续的字符可以是字母、数字、下划线或美元(数字是不能作为首字符出现的,以便JavaScript可以轻易区分开标识符和数字)。

出于可移植性和易于书写的考虑,通常我们只使用ASCII和数字来书写标识符。当然,JavaScript允许标识符中出现Unicode字符全集中的字母和数字。

2.4.2、保留字

2.4.2.1、关键字

JavaScript把一些标识符拿出来做自己的关键字。因此,就不能再在程序中把这些关键字用作标识符了。

break                 delete               function               return               typeof

case                  do                     if                            seitch               var

catch                 else                  in                           this                   void

continue           false                 instanceof            throw                while

debugger         finally                new                       true                    with

default              for                      null                        try  

2.4.2.2、保留字

A、JavaScript同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在未来版本中可能会使用。ECMAScript 5保留了这些关键字:

class       const          enum         export       extends       import        super

B、此外,下面这些关键字在普通的JavaScript代码中是合法的,但在严格模式下是保留字:

implements let private public yiels interface package protected static

C、严格模式同样对下面的使用做了严格限制,它们并不完全是保留字,但不能用做变量名、函数名或参数名:

arguments  eval

D、ECMAScript 3将Java的所有关键字都列为自己的保留字,尽管这些保留字在ECMAScript 5中放宽了限制,但如果你希望代码能在基于ECMAScript 3实现的解释器上运行的话,应当避免使用这些关键字作为标识符:

abstract    double        goto        native        static
booleam        enum        implements    package        super
byte        export        import        private        synchronized
char        extends        int            protected    throws
class        final        interface    public        transient
const        float        long        short        volatile

E、JavaScript预定义了很多全局变量和函数,应当避免把它们的名字用做变量名和函数

arguments              encodeURI                               Infinity               number                 RegExp

Array                         EncodeURIComponent         isFinite             Object                     String

Boolean                  Error                                            isNaN               parseFloat            SyntaxError

Date                         eval                                             JSON                 paseInt                  TypeError

decodeURI             EvalError                                   Math                   RangeError           undefined

decodeURIComponent Function                           NaN                   referenceError       URIError

2.5、可选的分号

保持严谨的习惯,编写优美的代码即可。           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值