目录

词法结构

介绍

  • JavaScript是一门大小写敏感的语言
  • JavaScript程序使用Unicode字符集编写
  • JavaScript使用\u后跟4位16进制数字代表任何16位Unicode码点

字面值

字面值是程序中直接出现的数据值,下列这些都是字面值:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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

标识符和保留字

标识符必须以字母,下划线(_),或美元符($)开头,后续字符可以是字母,数字,下划线或美元符。

关键字

1
2
3
4
5
6
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

JavaScript也保留了一些当前未使用但是未来可能会用到的关键字。ES5保留了下面的关键字:

1
class	const	enum	export	extends	import	super

此外,下列这些词在普通的Javascript代码中是合法的,但是在严格模式下被保留:

1
2
implements	let 	private 	public	yield
interface 	package	protected 	static

严格模式还对以下标识符施加限制。它们没有完全被保留,但是不允许用作变量,函数名或参数名:

1
arguments	eval

ES3保留了所有Java语言的关键字,虽然在ES5中放松了,但是如果想要代码能在ES3下运行,你仍应该避免使用这些标识符:

1
2
3
4
5
6
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 		volatile

JavaScript预定义了很多全局变量和函数,你应该避免使用它们作为自己的变量或函数名:

1
2
3
4
5
6
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总是将它们后面的换行符当成分号。

1
2
return
true;

JavaScript认为是:

1
return; true;

++和–操作符,这些操作可以是前缀操作符或后缀操作符。如果你想使用它们作为后缀操作符,那么它们必须出现在它们所应用的表达式同一行上。否则换行符会被当做分号,而++或–将被解释为作用于后面代码的前置操作符。比如:

1
2
3
x
++
y

被解释为x; ++y;,而不是x++; y