词法结构
目录
介绍
- JavaScript是一门大小写敏感的语言
- JavaScript程序使用Unicode字符集编写
- JavaScript使用\u后跟4位16进制数字代表任何16位Unicode码点
字面值
字面值是程序中直接出现的数据值,下列这些都是字面值:
12 // The number twelve
1.2 // The number one point two
"hello world" // A string of text
'Hi' // Another string
true // A Boolean value
false // The other Boolean value
/javascript/gi // A "regular expression" literal (for pattern matching)
null // Absence of an object
{ x:1, y:2 } // An object initializer
[1,2,3,4,5] // An array initializer
标识符和保留字
标识符必须以字母,下划线(_),或美元符($)开头,后续字符可以是字母,数字,下划线或美元符。
关键字
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 tryJavaScript也保留了一些当前未使用但是未来可能会用到的关键字。ES5保留了下面的关键字:
class const enum export extends import super此外,下列这些词在普通的Javascript代码中是合法的,但是在严格模式下被保留:
implements let private public yield
interface package protected static严格模式还对以下标识符施加限制。它们没有完全被保留,但是不允许用作变量,函数名或参数名:
arguments evalES3保留了所有Java语言的关键字,虽然在ES5中放松了,但是如果想要代码能在ES3下运行,你仍应该避免使用这些标识符:
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 undefined
decodeURIComponent Function NaN ReferenceError URIError可选的分号
JavaScript不会将每个换行符当成分号,如果下一个非空字符不能解释成当前语句的延续时,Javascript将换行当成分号。如果一个语句以(,[,/,+,或-开头,就有可能被解释成上一个语句的延续。下面是2个例外:
return,break和continue语句,Javascript总是将它们后面的换行符当成分号。
return
true;JavaScript认为是:
return; true;++和–操作符,这些操作可以是前缀操作符或后缀操作符。如果你想使用它们作为后缀操作符,那么它们必须出现在它们所应用的表达式同一行上。否则换行符会被当做分号,而++或–将被解释为作用于后面代码的前置操作符。比如:
x
++
y被解释为x; ++y;,而不是x++; y。