本文主要是介绍深究js(一)——词法结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.字符集
首先要介绍的是JavaScript的字符集。JavaScript是用Unicode字符集编写的,Unicode是ASCII和Latin-1的超集,并且支持地球上所有在用的语言。在ECMAScript3中,要求JavaScript的实现必须支持Unicode2.1及后续的版本,ECMAScript5则要求支持Unicode3及后续版本。
2.区分大小写
在JavaScript中是区分大小写的,在JavaScript中,变量a和A虽然是同一个字母,但是大小写不同,所以是不同的两个变量。但是在HTML中,是不区分大小写的,比如说onclick在HTML中可以写成ONCLICK或者onClick,但是在JavaScript中则必须小写。换句话说在HTML的标签和属性用JavaScript来写的话必须小写。值得一提的是,在XHTML中是区分大小写的,但由于浏览器有强大的纠错功能,即使文档中包含很多不严格的大小写,浏览器还是比较宽容的解析渲染。
3.注释
注释类似Java和c++,分为‘//’或者‘/**/’,了解编程的朋友应该知道怎么用,不多解释。
4.直接量
所谓直接量,就是在程序中直接使用的数据值。如下所示:
1 //数字 1.2 //小数 "hello" //字符串 'hello' //字符串 true //布尔值 false //布尔值 /javasrcipt/ //正则表达式 null //空 {x:1} //对象 [1,2,3] //数组
5.标识符和保留字
在JavaScript中,标识符是用来对变量和函数进行命名的,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。JavaScript标识符必须以字母、下划线(_)或美元符号($)为首,后续的可以是上述的那三个再加数字,但是数字不能为首字符。除了可以用ASCII字母和数字来书写标识符,我们也可以用Unicode字符来书写标识符。如:
var 蛤 = 'glasses' alert(蛤)
输出的结果是glasses
不过,我们并不能取任意名字作为标识符,因为在JavaScript中,有保留字,这些保留字作为JavaScript的关键字来使用,所以起名的时候不能起保留字为标识符。常见的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在ECMAScript5中保留了如下关键字:
class const enum export extends
import super
此外虽然有一些在JavaScript中是合法的但是在严格模式下是保留字的有:
implements let private public yield
interface package protected static arguments
eval在ECMAScript3中,将Java的所有关键字都列为自己的关键字,尽管在ECMAScript5中放宽了限制,但是如果想要基于ECMAScript3实现的解释器运行的话,还是尽量避免使用如下的关键字:
abstract double goto native static
boolean enum implements package super
byte export import private synchronized
char extends int protected throws
class final interface public transient
const float long short volatileJavaScript预定义了很多全局变量和函数,应当避免把它们的名字用做变量名和函数名:
arguments encodeURI Infinity Number RegExp
Array encodeURIComponent isFinite Object
String Boolean Error isNaN parseFloat
SyntaxError Date eval JSON parseInt
TypeError decodeURI EvalError Math RangeError
underfined decodeURIComponent Function NaN
ReferenceError URIError
6.分号
分号用来将语句隔开,在JavaScript中,如果语句各自独占一行,则可以省略之间的分号,JavaScript它会自动的填补分号。值得注意的是,JavaScript并不是在所有换行处都填补了分号,只有在缺少了分号就无法正确解析代码的时候才会填补分号。如下例子:
var a a = 3 console.log(a)系统会解析为:
var a; a = 3; console.log(a);如果是下面这个例子的话:
var y = x + f (a + b).toString()本来想着这是两条语句,但是在JavaScript的内部却是解析为:
var y = x + f(a + b).toString();通常来讲,如果一条语句以‘(’、‘[’、‘/’,‘+’,‘-’开始的话,那么极有可能和前一条语句合在一起解析,所以这个时候就需要一个分号。
在JavaScript中,如果当前语句和下一行语句无法合并解析,JavaScript则在第一行后填补分号,这是通用规则,但是有两个例外。第一个是涉及到return、break和continue语句。如:
return
true;在JavaScript中会解析为一条两条语句:
return; true;但是本意是想一条语句:
return true;也就是说,在return、break和continue和随后的表达式之间不能有换行。
第二种例外就是‘++’和‘--’。这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行,否则行尾将填补分号。同时‘++’或‘--’将会作为下一行代码的前缀操作符并与之一起解析。如:
x ++ y这段代码会解析为:
x;++y
而不是:
x++;y
本内容参考《JavaScript权威指南》,如有漏洞,望不吝赐教,谢谢。
这篇关于深究js(一)——词法结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!