变量是什么
一个变量,就是一个用于存放数值的容器。这个数值可能是一个用于累加计算的数字,或者是一个句子中的字符串。变量的独特之处在于它存放的数值是可以改变的。
变量的另一个特性就是它们能够存储任何的东西 – 不只是字符串和数字。变量可以存储更复杂的数据,甚至是函数。
声明变量
要想使用变量,你需要做的第一步就是创建它 – 更准确的说,是声明一个变量。声明一个变量的语法是在 var
或 let
关键字之后加上这个变量的名字:
1 | let myName; |
在这里我们声明了两个变量 myName
和 myAge
.
初始化变量
一旦你定义了一个变量,你就能够初始化它. 方法如下,在变量名之后跟上一个“=”,然后是数值:
1 | myName = 'Chris'; |
你可以像这样在声明变量的时候给变量初始化:
1 | let myName = 'Chris'; |
var 与 let 的区别
最初创建 JavaScript 时,是只有 var
的。 在大多数情况下,这种方法可以接受, 但有时在工作方式上会有一些问题——它的设计会令人困惑或令人讨厌 。 因此,let
是在现代版本中的 JavaScript 创建的一个新的关键字,用于创建与 var
工作方式有些不同的变量,解决了过程中的问题。
下面解释几个简单的差异。
首先,如果你编写一个声明并初始化变量的多行 JavaScript 程序,你可以在初始化一个变量之后用 var
声明它,它仍然可以工作。
这是由于变量的提升。但提升操作不再适用于 let
。如果将上面例子中的 var
替换成 let
将不起作用并引起一个错误。 这是一件好事——因为初始化后再声明一个变量会使代码变得混乱和难以理解。
其次,当你使用 var
时,可以根据需要多次声明相同名称的变量,但是 let
不能。比如:
1 | ar myName = 'Chris'; |
但是以下内容会在第二行引发错误:
1 | let myName = 'Chris'; |
更新变量
一旦变量赋值,您可以通过简单地给它一个不同的值来更新它。
关于变量命名的规则
你可以给你的变量赋任何你喜欢的名字,但有一些限制。 一般你应当坚持使用拉丁字符(0-9,a-z,A-Z)和下划线字符。
- 你不应当使用规则之外的其他字符,因为它们可能引发错误,或对国际用户来说难以理解。
- 变量名不要以下划线开头—— 以下划线开头的被某些JavaScript设计为特殊的含义,因此可能让人迷惑。
- 变量名不要以数字开头。这种行为是不被允许的,并且将引发一个错误。
- 一个可靠的命名约定叫做 **”小写驼峰命名法”**,用来将多个单词组在一起,小写整个命名的第一个字母然后大写剩下单词的首字符。我们已经在文章中使用了这种命名方法。
- 让变量名直观,它们描述了所包含的数据。不要只使用单一的字母/数字,或者长句。
- 变量名大小写敏感——因此
myage
与myAge
是2个不同的变量。 - 最后也是最重要的一点—— 你应当避免使用JavaScript的保留字给变量命名。保留字,即是组成JavaScript的实际语法的单词!因此诸如
var
,function
,let和
for
等,都不能被作为变量名使用。浏览器将把它们识别为不同的代码项,因此你将得到错误。
变量类型
Number
你可以在变量中存储数字,不论这些数字是像30(也叫整数)这样,或者像2.456这样的小数(也叫做浮点数)。与其他编程语言不同,在 JavaScript 中你不需要声明一个变量的类型。当你给一个变量数字赋值时,不需要用引号括起来。
1 | let myAge = 17; |
String
字符串是文本的一部分。当你给一个变量赋值为字符串时,你需要用单引号或者双引号把值给包起来,否则JavaScript将会把这个字符串值理解成别的变量名。
1 | let dolphinGoodbye = 'So long and thanks for all the fish'; |
Boolean
Boolean 的值有2种:true或false。它们通常被用于在适当的代码之后,测试条件是否成立。举个例子,一个简单的示例如下:
1 | let iAmAlive = true; |
然而实际上通常是以下用法:
1 | let test = 6 < 3; |
这是使用“小于”操作符(<)来测试6小于3。正如你所料的,将会返回false
,因为6并不小于3!在这个课程中,以后你将会学到许多有关操作符的知识。
Array
数组是一个单个对象,其中包含很多值,方括号括起来,并用逗号分隔。尝试在您的控制台输入以下行:
1 | let myNameArray = ['Chris', 'Bob', 'Jim']; |
当数组被定义后,您可以使用如下所示的语法来访问各自的值,例如下行:
1 | myNameArray[0]; // should return 'Chris' |
此处的方括号包含一个索引值,该值指定要返回的值的位置。 您可能已经注意到,计算机从0开始计数,而不是像我们人类那样的1。
在以后的文章,你将更多地了解数组。
Object
在编程中,对象是现实生活中的模型的一种代码结构。您可以有一个简单的对象,代表一个停车场,并包含有关其宽度和长度的信息,或者您可以有一个代表一个人的对象,并包含有关他们的名字,身高,体重,他们说什么语言,如何说 你好,他们,等等。
尝试在您的控制台输入以下行:
1 | let dog = { name : 'Spot', breed : 'Dalmatian' }; |
要检索存储在对象中的信息,可以使用以下语法:
1 | dog.name |
我们现在不会看对象了 - 您可以在将来的模块中了解更多关于这些对象的信息.
动态类型
JavaScript是一种“动态类型语言”,这意味着不同于其他一些语言(译者注:如C、JAVA),您不需要指定变量将包含什么数据类型(例如number或string)
例如,如果你声明一个变量并给它一个带引号的值,浏览器就会知道它是一个字符串:
1 | let myString = 'Hello'; |
即使它包含数字,但它仍然是一个字符串,所以要小心:
1 | let myNumber = '500'; // oops, this is still a string |
第一次返回 String;第二次返回 Number。
GitHub Issues