JS全书:JavaScript Web前端开发指南
上QQ阅读APP看书,第一时间看更新

3.1 基本语法

3.1.1 语句

JavaScript中的语句以英文分号(;)结束,表示一行代码的结束,但分号可以省略,解析器(例如浏览器的JavaScript引擎)会在解析JavaScript代码时自动在每个语句的结尾补上分号。

      let a = 1;

尽管分号可以省略,但不建议省略,因为在某些情况下,自动补全的分号会导致代码的运行结果与期望的不一致,例如下面的代码:

会被解析为:

不过,编码规范的问题主要看个人和团队的习惯和要求,这方面没有强制的要求。

3.1.2 注释

注释通常用来对一段代码进行描述,以便开发人员能快速了解这段代码的作用,提高代码的可读性,也可以用来屏蔽一段代码的运行。

在JavaScript中,你可以使用单行注释和多行注释,注释中的语句不会被解析器解析并执行,具体如下。

下面以1.4.1小节中的示例代码为例,对其中的JavaScript代码进行注释:

保存修改后刷新页面,此时浏览器中将不再出现hello world字样,而是显示空白。

此外,良好的注释有利于代码的可维护性和团队协作性,在工作和学习中这一点都很重要。

3.1.3 标识符

标识符指的是变量、属性、函数的名称或函数的参数,示例如下。

在上述代码中:

  • 变量名num、obj是标识符。
  • 属性名name是标识符。
  • 函数名foo是标识符。
  • 函数参数arg是标识符。

到这里,你可能发现了一个规律,标识符都是英文字母,那么,标识符的名称是不是只能由英文字母组成呢?

1. 标识符的命名

标识符不全是由英文字母组成的,标识符以字母、下画线或$符号开头,其后选择性地跟随一个或多个字母、数字、下画线、$符号。

其中,字母可以是中文、英文、日文、韩文等,这是因为JavaScript中的字母是采用Unicode统一编码制的,是国际上通用的16位编码制,它包含了亚洲文字编码。因此,JavaScript的字母不是只有英文字母。

示例如下。

上述代码可以正常运行。

2. 标识符名称区分大小写

标识符的名称区分大小写,变量名a和变量名A表示两个不同的变量,阅读并运行下面的代码。

      let a = 1;
      let A = 1;
      a === A; // -> false
3. 标识符名称不能为关键字和保留字

关键字有其特定含义,是语法中的一部分,例如常见的var,我们不能定义一个变量名为var的变量,具体如下。

      //运行报错
      let var = 1;

保留字是语法中定义过的字,为了使当前版本的代码能向后兼容,为将来的关键字保留的单词,因此,保留字也不允许作为标识符使用,具体如下。

      //运行报错
      let int = 1;
4. 标识符作为属性名时,可以为关键字和保留字

示例如下。

5. 标识符命名规范

命名规范并不是语言标准的一部分,命名规范是通过一些约定俗成的方式对标识符的命名进行限制的,使其有利于他人或自己阅读。

常见的命名规范有以下3种。

  • 匈牙利命名法
  • 驼峰式命名法
  • 帕斯卡命名法
· 匈牙利命名法

匈牙利命名法是在单词(这个单词的首字母需要大写,并指明变量的用途)前面加上表示相应的小写字母的符号作为前缀,标识出变量的作用域和类型等,这些符号可以有多个,并组合成一个变量名。

在匈牙利命名法中,s表示字符串String,所以一个字符串的变量名可以是:

      let sMyName;
      let sMyFirstName;
· 驼峰式命名法

驼峰式命名法通过拆分单词,并将第一个单词以小写字母开始,第二个及之后的单词的首字母大写,组合成一个变量名,示例如下。

      let myName;
      let myFirstName;

这样的变量名看上去就像驼峰一样此起彼伏,因而得名。

· 帕斯卡命名法

与驼峰式命名法类似,只不过驼峰式命名法是第一个单词的首字母小写,而帕斯卡命名法是第一个单词的首字母也大写,示例如下。

      let MyName;
      let MyFirstName;

无论使用哪种命名法,尽量使变量名具有特定的含义,即便变量名会变得比较长,但要避免定义一些奇怪的变量名。

练习

  • 命名一些标识符。