# 语言基础

# 1. 语法

# 1.1 区分大小写

ECMAScript中一切都区分大小写。无论是变量、函数名还是操作符,都区分大小写

换句话说,变量test和变量Test是两个不同的变量。

类似地,typeof不能作为函数名,因为它是一个关键字。但Typeof是一个完全有效的函数名。

# 1.2 标识符

变量、属性、函数或函数参数的名称。

标识符可以由一个或多个下列字符组成:

  • 第一个字符必须是一个字母、下划线(_)或美元符号($);
  • 剩下的其他字符可以是字母、下划线、美元符号或数字。

标识符中的字母可以是扩展ASCII(Extended ASCII)中的字母,也可以是Unicode的字母字符,如À和Æ(但不推荐使用)。

按照惯例,一般使用驼峰命名。

# 1.3 注释

ECMAScript采用C语言风格的注释,包括单行注释块注释

// 单行注释

/*
    这里多行
    块注释
    这里多行
*/
1
2
3
4
5
6
7

# 1.4 严格模式

要对整个脚本启用严格模式,在脚本开头加上这一行:

"use strict";
1

单独指定一个函数在严格模式下执行:

function doSomething() {
    "use strict";
    // 函数体
}
1
2
3
4

# 1.5 语句

ECMAScript中的语句以分号结尾。省略分号意味着由解析器确定语句在哪里结尾。

记着加分号有助于防止省略造成的问题,比如可以避免输入内容不完整。

加分号也有助于在某些情况下提升性能,因为解析器会尝试在合适的位置补上分号以纠正语法错误。

# 1.5.1 单语句

let diff = a - b  // 没加分号,有效,不推荐

let sum = a + b; // 加分号,有效,推荐
1
2
3

# 1.5.2 多语句

多条语句可以合并到一个C语言风格的代码块中。

if (test) {
    test = false;
    console.log(test);
}
1
2
3
4

if之类的控制语句只在执行多条语句时要求必须有代码块。

最佳实践是始终在控制语句中使用代码块,即使要执行的只有一条语句

// 有效,但容易导致错误,应该避免
if (test)
    console.log(test);
// 推荐
if (test) {
    console.log(test);
}
1
2
3
4
5
6
7

# 2. 变量

# 2.1 var

要定义变量,可以使用var操作符,后面跟变量名。

var message;

// 这行代码定义了一个名为message的变量,可以用它保存任何类型的值。
1
2
3

不初始化的情况下,变量会保存一个特殊值undefined。

var message = "hi";

// 这里message被定义为一个保存字符串值hi的变量。
// 像这样初始化变量不会将它标识为字符串类型,只是一个简单的赋值而已。
// 随后,不仅可以改变保存的值,也可以改变值的类型:

message = 100; // 合法,不推荐
1
2
3
4
5
6
7

# 2.2 var声明作用域