【2】JavaScript 的变量/常量
变量,用一句概括就是 数据的内容。如果将脚本看作是为了得到最终解答的一系列 数据的处理,那么变量职责就是 在处理过程中用来暂时保存数据
变量 是指 暂时保存处理过程中的数据的容器。
声明变量
要使用变量,首先需要先声明变量。变量的声明是指将变量的名字在 JavaScript 中注册并且确保内存中存储的空间。要声明变量,可以使用var命名。
- 写法 var命名
var 变量名 [= 初始值],…
例如,下面是声明名为 name 的变量
var name;
如果声明多个变量,代码如下:
var name;
var age;
可以使用一个 var 声明多个变量。
var name, age;
一个 var 声明多个变量时,变量中间需要使用英文逗号隔开。
另外,声明时也可以设定初始值。
var name = '九皇叔叔';
var age = 100;
这里进行初始化值时,是使用 等号(=),意思是:将右边的值赋值给左边的变量。
没有设置初始值时,JavaScript 则给变量分配未定义(undefined)这个特殊的值。
变量的声明是任意的吗?
严格来说,JavaScript 中变量声明不是必须的。是因为即使没有声明变量,首次赋值时 JavaScript 也会隐式声明变量(=确保空间)。
所以,下面的代码在语法上并没有错误。
name = '九皇叔叔';
console.log(name);
另一个声明变量的写法 - let 命令 -
在 ES2015 中,新增了 let 命令作为声明变量的命令。let 命令的使用方法和 var 命令相同。
// 基本的声明
let name;
// 声明多个变量
let name, age;
// 设定初始值
let name = '九皇叔叔', age = 100;
var 和 let 的区别
(1) 不允许重复的变量
let 命令不允许有同名的变量。因此,下面的代码发生了 Identifier ‘name’ has already been declared (变量 name 已经被声明了)这样的错误。
let name = '九皇';
let name = '叔叔';
因为 var 命令允许有同名变量,所以,下面代码可以正确的运行。
var name = '九皇';
var name = '叔叔';
(2) 支持块级作用域
关于这个特性,后续章节作用域时,会详细说明。当前只需知晓:let 命令能够更细致的管理变量的有效范围。
因为 let 具有以上特性,所以在 ES2015 的环境中,推荐优先使用 let 命令。
标识符的命名规则
标识符 是给构成脚本的元素 所起的名字。包括但不限于:变量名、函数名、类名等等。
在 JavaScript 中,名字在命名时,一般遵循以下 四条规范:
规则 | 样例(正确) | 样例(错误) |
---|---|---|
第1个字符为英文字母、下划线(_)或美元符号($)中的任意一个 | _name、$age | 101_name |
第2个字符之后为第1个字符可以使用的字符或者是任意的数字 | name0、age1 | name-0、age@1 |
区分变量名中英文字母的大写/小写 | name、Name | - |
不使用 JavaScript 中的保留字 | forth | for |
以下条约虽然不是命名规范,,但从 书写更易读的代码 的角度来看,还是注意下:
序号. | 注意点 | 样例(建议) | 样例(不建议) |
---|---|---|---|
1 | 从名字容易推理到数据的内容 | name、age | n、a |
2 | 不过长、也不过短 | keyword | kw、keyword_for_user_search |
3 | 看起来不容易混淆 | - | usr/user |
4 | 首字母的 _ 有特殊含义时不使用 | name | _name |
5 | 使用事先决定的统一命名 | - | last_name、LastName、lastName |
6 | 基本使用英文单词 | name | mingzi |
上述只是一般性建议,在实际使用时,需结合上下文进行视情况而定。例如:for 语句中使用的计数变量,一般命名为 i、j、k … 这样尽量简短的名字。
命名的注意
在序号.5
中提到统一命名,有以下 3种 情况:
写法 | 说明 | 样例 |
---|---|---|
camelCase写法 | 开头单词的首字母小写、之后的单词首字母都大写 | lastName |
Pascal 写法 | 所有单词的首字母都是大写 | LastName |
下划线写法 | 单词间使用下划线( _ )进行连接 | last_name、LAST_NAME |
通常写法
- 变量/函数名 :camelCase 写法
- 常量名 :下划线写法
- 类(构造函数)名 :Pascal 写法
声明常量
理解常量的含义,先来看不使用常量的例子。
eg:已知圆的半径 r=5cm,计算园周长是多少?(公式 C = 2πr )
// 定义圆的半径
let radius = 5; // 单位:厘米
// 定义 π
let pi = 3.1415;
// 计算圆的周长
let circumference = 2 * pi * radius;
// 输出结果
console.log("圆的周长为:" + circumference.toFixed(2) + " 厘米");
上述代码中,半径 这个变量(radius)是可以随时改变的,可能计算 10cm 的半径、20cm 的半径 等等。但是,π
是基本不会变动的(例如:变为 9.9999;但精度可能会变长:3.1415926),像这样一类的变量,我们可以使用 const
来代替 var
、let
进行声明变量,如下:
// 定义 π
const PI = 3.1415;
常量的命名规范基本遵循变量的命名规则,但是为了更容易识别出是常量,通常全部使用大写字母并且用下划线来分割单词。例如:USER_NAME
调整后的代码如下:
// 定义圆的半径
let radius = 5; // 单位:厘米
// 定义 π
const PI = 3.1415;
// 计算圆的周长
let circumference = 2 * PI * radius;
// 输出结果
console.log("圆的周长为:" + circumference.toFixed(2) + " 厘米");