JavaScript的语法大量借鉴了C 及其他类C 语言(如Java 和Perl)的语法。因此,熟悉这些语言的开发人员在接受JavaScript 更加宽松的语法时,一定会有一种轻松自在的感觉。
一、区分大小写
- 要理解的第一个概念就是JavaScript 中的一切(变量、函数名和操作符)都区分大小写。这也就意味着,变量名test 和变量名Test 分别表示两个不同的变量,而函数名不能使用typeof,因为它是一个关键字,但typeOf 则完全可以是一个有效的函数名。
二、标识符
- 所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以是按照下列格式规则组合起来的一或多个字符:
- 第一个字符必须是一个字母、下划线(_)或一个美元符号($);
- 其他字符可以是字母、下划线、美元符号或数字。
- 标识符中的字母也可以包含扩展的ASCII 或Unicode 字母字符(如À和Æ),但我们不推荐这样做。
- 按照惯例,JavaScript 标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例如:firstSecond、myCar、doSomethingImportant
- 虽然没有谁强制要求必须采用这种格式,但为了与JavaScript 内置的函数和对象命名格式保持一致,可以将其当作一种最佳实践。
三、注释
- JavaScript 使用Java风格的注释,包括单行注释和块级注释。单行注释以两个斜杠开头,如下所示:
// 单行注释
- 块级注释以一个斜杠和一个星号(/*)开头,以一个星号和一个斜杠(*/)结尾,如下所示:
/* * 这是一个多行 * (块级)注释 */
- 虽然上面注释中的第二和第三行都以一个星号开头,但这不是必需的。之所以添加那两个星号,纯粹是为了提高注释的可读性(这种格式在企业级应用中用得比较多)。
四、语句
- JavaScript 中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾,如下例所示:
var sum = a + b // 即使没有分号也是有效的语句——不推荐 var diff = a - b; // 有效的语句——推荐
- 虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为加上这个分号可以避免很多错误(例如不完整的输入),开发人员也可以放心地通过删除多余的空格来压缩JavaScript 代码(代码行结尾处没有分号会导致压缩错误)。另外,加上分号也会在某些情况下增进代码的性能,因为这样解析器就不必再花时间推测应该在哪里插入分号了。
- 可以使用Java风格的语法把多条语句组合到一个代码块中,即代码块以左花括号({)开头,以右花括号(})结尾:
if (test){ test = false; alert(test); }
- 虽然条件控制语句(如if 语句)只在执行多条语句的情况下才要求使用代码块,但最佳实践是始终在控制语句中使用代码块——即使代码块中只有一条语句,例如:
if (test) alert(test); // 有效但容易出错,不要使用 if (test){ // 推荐使用 alert(test); }
- 在控制语句中使用代码块可以让编码意图更加清晰,而且也能降低修改代码时出错的几率。
五、关键字和保留字
JavaScript规定了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。
JavaScript描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。
- JavaScript 引擎中使用关键字作标识符,会导致“Identifier Expected”错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。
- 一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的JavaScript 版本兼容。
六、变量
- JavaScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用var 操作符(注意var 是一个关键字),后跟变量名(即一个标识符),如下所示:
var message;
- 这行代码定义了一个名为message 的变量,该变量可以用来保存任何值(像这样未经过初始化的变量,会保存一个特殊的值——undefined)。JavaScript 也支持直接初始化变量,因此在定义变量的同时就可以设置变量的值,如下所示:
var message = "hi";
- 在此,变量message 中保存了一个字符串值"hi"。像这样初始化变量并不会把它标记为字符串类型;初始化的过程就是给变量赋一个值那么简单。因此,可以在修改变量值的同时修改值的类型,如下所示:
var message = "hi"; message = 100; // 有效,但不推荐
- 在这个例子中,变量message 一开始保存了一个字符串值"hi",然后该值又被一个数字值100 取代。虽然我们不建议修改变量所保存值的类型,但这种操作在JavaScript 中完全有效。
- 可以使用一条语句定义多个变量,只要像下面这样把每个变量(初始化或不初始化均可)用逗号分隔开即可:
var message = "hi", found = false, age = 29;
- 这个例子定义并初始化了3 个变量。同样由于ECMAScript 是松散类型的,因而使用不同类型初始化变量的操作可以放在一条语句中来完成。虽然代码里的换行和变量缩进不是必需的,但这样做可以提高可读性。
网友评论