1. 变量的定义
变量
是数据的“命名存储”,也就是相当于是存储数据的容器。我们可以使用变量来保存数据,比如商品信息,用户信息等等。
对于这些数据,我们就可以使用变量非常方便的进行操作。
1.1 声明变量
在 JavaScript 中创建一个变量,我们需要用到 var
关键字。
下面的语句创建(也可以称为 声明 或者 定义)了一个名称为 “message” 的变量:
var message;
现在,我们可以通过赋值运算符 =
为变量添加一些数据:
var message;
message = 'Hello';
现在,我们就可以通过message
这个变量来使用这个字符串了:
var message;
message = 'Hello!';
console.log(message); // 控制台打印变量内容
简洁一点,我们可以将变量定义和赋值合并成一行:
var message = 'Hello!'; // 定义变量,并且赋值
console.log(message); // Hello!
也可以同时声明多个变量:
var user = 'John',
age = 25,
message = 'Hello';
了解let
let
与var
关键字 大体 相同,也用来声明变量,是ES6
新增。
var message = 'Hello';
let msg = 'hi';
let
和 var
之间有些差别,我们会在ES6
的学习中讲到。
在 JavaScript 中,定义变量必须使用关键字
num = 5; // 这种声明变量的方式是不可取的, 虽然没有报错.
alert(num); // 5
在严格模式下会报错。
"use strict";
num = 5; // 报错:num 未定义
变量要先定义,才能使用。
比如,我们不设置变量,直接输出:
<script type="text/javascript">
console.log(a);
</script>
控制台将会报错:
1.2 理解变量 (现实生活的类比)
如果将变量想象成一个“数据”的盒子,盒子上有一个唯一的标注盒子名字的贴纸。这样我们能更轻松地掌握“变量”的概念。
例如,变量 message
可以被想象成一个标有 "message"
的盒子,盒子里面的值为 "Hello!"
:
1.3 变量的赋值和修改
我们可以在盒子内放入任何值。
并且,这个盒子的值,我们想改变多少次,就可以改变多少次:
var message;
message = 'Hello!';
message = 'World!'; // 值改变了
console.log(message);
当值改变的时候,之前的数据就被从变量中删除了:
我们还可以声明两个变量,然后将其中一个变量的数据拷贝到另一个变量。
var hello = 'Hello world!';
var message;
// 将字符串 'Hello world' 从变量 hello 拷贝到 message
message = hello;
// 现在两个变量保存着相同的数据
console.log(hello); // Hello world!
console.log(message); // Hello world!
2. 变量命名
JavaScript 的变量命名有一些规则:
- 变量名称必须仅包含字母,数字,符号
$
和_
。 - 首字符必须非数字。
- 严格区分大小写
- 不能使用关键字或保留字
- 使用驼峰命名法
- 命名语义化
有效的命名,例如:
var userName;
var test123;
美元符号 '$'
和下划线 '_'
也可以用于变量命名。它们是正常的符号,就跟字母一样,没有任何特殊的含义。
下面的命名是有效的:
var $ = 1; // 使用 "$" 声明一个变量
var _ = 2; // 现在用 "_" 声明一个变量
alert($ + _); // 3
下面的变量命名不正确:
var 1a; // 不能以数字开始
var my-name; // 连字符 '-' 不允许用于变量命名
区分大小写
命名为 apple
和 AppLE
的变量是不同的两个变量。
允许非英文字母,但不推荐
可以使用任何语言,就像这样:
var имя = '...';
var 我 = '...';
从技术上讲,这样没问题。这样的命名是完全允许的,但是用英文进行变量命名是国际惯例。哪怕我们正在写一个很小的脚本,它也有可能会被使用很久。某个时候,来自其他国家的人可能会需要阅读它。
驼峰命名法
如果命名包括多个单词,通常采用驼峰式命名法(camelCase)。也就是,单词一个接一个,除了第一个单词,其他的每个单词都以大写字母开头:myVeryLongName
。
保留字
有一张 保留字列表,这张表中的保留字无法用作变量命名,因为它们被用于编程语言本身了。
比如,let
、class
、return
、function
都被保留了。
下面的代码将会抛出一个语法错误:
var let = 5; // 不能用 "let" 来命名一个变量,错误!
var return = 5; // 同样,不能使用 "return",错误!
命名语义化
一个变量名应该有一个清晰、明显的含义,对其存储的数据进行描述。
快速地浏览变量的命名就知道代码是一个初学者还是有经验的开发者写的。
声明变量之前,多花点时间思考一个好名字。