一个 变量,就是一个用于存放数值等信息的容器。
声明变量
使用 let 声明变量
要想使用变量,你需要做的第一步就是创建它——更准确的说,是声明一个变量。声明一个变量的语法是在 let 关键字之后加上这个变量的名字:
let myName;
变量名
JavaScript 是区分大小写的,并使用 Unicode 字符集。举个例子,可以将单词 Früh(在德语中意思是“早”)用作变量名。
JavaScript 是大小写敏感的,因此变量 früh 和 Früh 则是两个不同的变量。
详见标识符。
初始化变量
声明变量时,在变量名后面使用 = 加上表达式可以初始化变量。
let myName = "Mike";
使用 const 声明常量
使用 const 声明常量,和 let 声明的变量类似,区别是常量无法重新赋值,必须初始化。
const myName = "Mike";
其他声明变量的方式 var
早期的 JavaScript 是通过 var 声明变量的。
var myName = "Mike";
let 是在现代版本中的 JavaScript 创建的一个新的关键字,用于创建与 var 工作方式有些不同的变量,解决了过程中的问题,比如:
-
var存在变量的提升,即声明语句会被提升到代码开头,所以可以在声明变量之前使用变量(值为undefined,因为初始化赋值语句不会提升)。但let的提升操作会产生暂时性死区,声明之前使用会报错。详见变量提升。 -
var允许重复声明变量,let不允许。 -
全局作用域
var创建的变量会作为全局对象window的属性,let不会。详见全局对象。 -
块内
let创建的变量使用块级作用域,而var创建的变量可以在块外部被访问。详见作用域。
没有任何理由再使用 var,使用它被认为是坏习惯。大多数时间如果变量不会被重新分配使用 const,变量会改变的情况下使用 let,这将会帮助避免大量 bug。
使用变量
读取变量的值
直接使用已声明的变量名就可以读取变量的值。
myName;
如果没有赋初始值,则其值为 undefined。
如果访问一个未声明的变量会导致抛出 ReferenceError 异常。
修改变量的值
使用赋值语句可以修改变量的值。JavaScript 是一种有着动态类型的动态语言。JavaScript 中的变量与任何特定值类型没有任何关联,任何变量都可以被重新赋予各种类型的值。
myName = "Mike";
如果变量是 const 声明的,则会报错。
全局变量与全局对象
实际上,全局变量是全局对象的属性。在网页中,缺省的全局对象是 window ,所以你可以用形如 window.variable 的语法来设置和访问全局变量。
因此,你可以通过指定 window 或 frame 的名字,在当前 window 或 frame 访问另一个 window 或 frame 中声明的变量。例如,在文档里声明一个叫 phoneNumber 的变量,那么你就可以在子框架里使用 parent.phoneNumber 的方式来引用它。
直接给未声明的全局变量赋值
你也可以直接给未声明的全局对象的属性(全局变量)赋值,像这样:
x = 42;
在函数外使用这种形式赋值,会产生一个全局变量 x。在严格模式下会产生错误。因此你不应该使用这种方式来声明变量。
因为未声明的全局变量常常导致预期之外的行为,所以不建议使用。
参考
如何存储你需要的信息——变量
https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/First_steps/Variables
语法和数据类型
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#数据结构和类型