当前位置 博文首页 > 小旺的博客:JavaScript语法详解
在行尾“//”之后的文本都会被JavaScript当做注释忽略掉的。此外,“/”和“/”之间的文本也会当做注释,这种注释可以跨行书写,但不能有嵌套的注释。
//单行注释
/*注释*/ //注释
/*
* 注释
* 注释
*/
12 //数字
1.2 //小数
"hello world" // 字符串
'hi' // 字符串
true // 布尔值
false // 布尔值
/javascript/gi // 正则表达式
null // 空
标识符就是一个名字。
在JavaScript中,标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。
JavaScript标识符必须以字母、下划线(_)或美元符($)开始。后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便JavaScript可以轻易区分开标识符和数字)。
JavaScript把一些标识符拿出来用做自己的关键字。因此,就不能再在程序中把这些关键字用做标识符了:
JavaScript同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在未来版本中可能会用到。ECMAScript5保留了这些关键字:
class const enum export extends import super
此外,下面这些关键字在普通的JavaScript代码中是合法的,但是在严格模式下是保留字:
implements let private public yield
interface package protected static
严格模式同样对下面的标识符的使用做了严格限制,它们并不完全是保留字,但不能用做变量名、函数名或参数名:
arguments eval
ECMAScript3将Java的所有关键字都列为自己的保留字,尽管这些保留字在ECMAScript5中放宽了限制,但如果你希望代码能在基于ECMAScript 3实现的解释器上运行的话,应当避免使用这些关键字作为标识符:
JavaScript预定义了很多全局变量和函数,应当避免把它们的名字用做变量名和函数名:
arguments encodeURL Infinity
Number RrgExp Array
encodeURIComponent isFinite
Object String Boolean
Error isNaN parseFloat
SyntaxEttor Date eval
JSON parseInt TypeError
decodeURI EvalError Math
RangeError undefined decodeURIComponent
Function NaN ReferenceError
URIError
在JavaScript中,如果语句各自独占一行,通常可以省略语句之间的分号(程序结尾或右花括号“}”之前的分号也可以省略)。
因为两条语句用两行书写,第一个分号是可以省略掉的:
a=3;
b=4;
如果按照如下格式书写,第一个分号则不能省略掉:
a=3;b=4;
JavaScript并不是在所有换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JavaScript才会填补分号。换句话讲(类似下面代码中的两处异常),如果当前语句和随后的非空格字符不能当成一个整体来解析的话,JavaScript就在当前语句行结束处填补分号。
如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。以“/”、“+”和“-”开始的语句并不常见,而以“(”和“[”开始的语句则非常常见,至少在一些JavaScript编码风格中是很普遍的。
第一个例外是在涉及return、break和continue语句。如果这三个关键字后紧跟着换行,JavaScript则会在换行处填补分号。
return
true;
JavaScript会解析为:
return; true;
在return、break和continue和随后的表达式之间不能有换行。如果添加了换行,程序则只有在极特殊的情况下才会报错,而且程序的调试非常不方便。
第二个例外是在涉及“++”和“–”运算符。这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时“++”或“–”将会作为下一行代码的前缀操作符并与之一起解析
x
++
y
JavaScript会解析为:
x;++y 而不是 x++;y
参考书籍:JavaScript权威指南
cs