《JS权威指南学习总结--第二章词法结构》
第二章词法结构
内容要点:
一.注释
1. //表示单行注释
2. /*这里是一段注释*/
3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/
二.直接量
所谓直接量,就是程序中直接使用的数据量,比如:
数字、小数、字符串文本、布尔值、正则表达式直接量
三.标识符和保留字
标识符作用:标识符就是一个名字,在JS中,标识符用来对变量和函数进行命名,或者用做JS代码中某些循环语句中的跳转位置的标记。
标识符命名规则:
1.必须以字母、下划线(_)或美元符($)开始。
2.后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便JS可以轻便区分开标识符和数字)。
3.出于可移植性和易于书写的考虑,通常只使用ASCII字母和数字来书写标识符。然而需要注意的是,JS允许标识符中出现Unicode字符全集中的字母和数字。由此,程序员也可以使用非英语语言或数学符号来书写标识符。
4.和其他语言一样,JS保留了一些标识符来为自己所用,这些“保留字”不能用做普通的标识符。
保留字:
以下就是ECMAScript的全部关键字(带*号上标的是第5 版新增的关键字):
以下是ECMA-262 第3 版定义的全部保留字:
第5 版把在非严格模式下运行时的保留字缩减为下列这些:
在严格模式下,第5 版还对以下保留字施加了限制:
注意, let 和yield 是第5 版新增的保留字;其他保留字都是第3 版定义的。为了最大程度地保证兼容性,建议大家将第3 版定义的保留字外加let 和yield 作为编程时的参考。
在实现ECMAScript 3 的JS 引擎中使用关键字作标识符,会导致"Identifier Expected" 错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。
第5 版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的 ECMAScript 版本兼容。
严格模式下,同样对argument、eval标识符的使用做了严格限制,它们并不完全是保留字,但不能用做变量名、函数名或参数名。
js的具体实现可能定义独有的全局变量和函数,每一种特定的JS运行环境(客户端、服务器端等)都有自己的一个全局属性列表,这一点是需要牢记的
四.可选的分号
和其他许多编程语言一样,JS使用分号(; 英文)将语句分隔开。这对增强代码的可读性和整洁性是非常重要的。
缺少分隔符:一条语句的结束就成了下一条语句的开始。
在JS中,如果语句各种独占一行,通常可以省略语句之间的分号(程序结尾或右花括号"}"之前的分号也可以省略)。
关于JS中可选分号的问题有几个细节需要注意:
1.两条语句用两行书写,第一个分号可以省略掉的:
a=3;
b=4;
如果按照一行 a=3;b=4; 格式书写,第一个分号不能省略掉。
2.JS并不是在所有的换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JS才会填补分号。
换句话说:如果当前语句和随后的语句的非空格字符不能当成一个整体来解析的话,JS就在当前语句行结束处填补分号。
var a
a
=
3
console.log(a)
JS将其解析为:
var a;a=3;console.log(a);
3.两种特殊的情况:
(1)在涉及到return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,JS则会在换行处填补分号。
return
true
JS会解析成
return;true;
(2)在涉及到"++"和"--"运算符的时候,这些运算符可以作为表达式的前缀,也可以当作表达式的后缀。如果将其用作后缀表达式,它应该和表达式在同一行,否则,行尾将填补分号,同时"++","--"
将会作为下一行代码的前缀操作符并与之一起解析,
x
++
y
JS将解析成
x;++y;