一、了解变量是什么
变量其实就是计算机中的一个保存数据的盒子,用最通俗的话来讲,它其实就是用一个符号来代表一个数据。定义变量实际上就是在定义空间,创建一个新的内存空间去存放数据。
二、变量的作用
变量的作用就是用来保存数据值,它们是程序里保存数据的盒子,变量可以保存各种类型的数据,如数字,字符串,布偶值等等其他类型的数据。
变量主要运用在以下几个方面:
-
存储临时数据:在程序运行过程中,变量可以用来暂存中间结果或其他需要的数据。
-
参数传递:在函数调用时,实参通过变量传递给函数的形参。
-
数据操作:使用变量作为操作数参与各种算术、逻辑和字符串操作。
-
循环控制:在循环语句中,变量可用于控制循环的次数或条件。
-
条件判断:在条件语句中,变量作为判断条件的一部分,决定程序的执行流向。
-
函数返回值:函数可以通过变量保存计算结果,并将其返回给调用者。
-
对象属性:变量还可以作为对象的属性,保存对象的状态信息。
-
事件处理:在响应用户操作时,变量可以保存事件相关的数据。
三、变量的定义
首先定义变量的方式有三种,分别是var,let,const。
用法:var(let/const )变量名 = 值。
var:ES5之前一直在使用
let:ES6提出,但是,相比较于var来说,它必须先定义后使用
const:ES6提出,它定义的变量都是常量,值不能修改并且必须附带初始值
四、定义变量的区别
定义var变量:
(1)能重复声明变量
//例如
var a = 1;
var a = 2;
(2)可以不需要初始值
//例如
var a;
(3)具有变量提升
//例如
console.log(a) // undefined
var a = 2;
(4)具有函数作用域
// 例如
function demo1() {
var a = 2;//局部
console.log(a); // a=2
}
demo1()
(5)可以修改初始值
// 例如
var a = 1;
a = 2;
console.log(a) //a = 2
(6)可以在声明变量之前使用
//例如
console.log(a) // undefined
var a;
定义let变量:
(1)不能重复声明变量
let a = 1;
let a = 2;
console.log(a) //Uncaught SyntaxError: Identifier 'a' has already been declared
(2)可以不需要初始值
//例如
let a;
(3)具有变量提升但是会形成暂时性死区(报错)
//例如
console.log(a) //Uncaught ReferenceError: Cannot access 'a' before initialization
let a;
(4)具有块级作用域
//例如
if (true) {
// 块级作用域
let a = 1; //存在块级作用域
console.log(a); //a=1
}
(5)可以修改初始值
//例如
let a = 1;
a=2;
console.log(a) //a=2;
(6)不可以在声明变量之前使用
//例如
console.log(a) //Uncaught ReferenceError: Cannot access 'a' before initialization
let a;
定义const变量:
(1)不能重复声明变量
const a = 1;
const a = 2;
console.log(a) //SyntaxError: Identifier 'a' has already been declared
(2)必须要初始值
//例如
const a;
console.log(a) //Uncaught SyntaxError: Missing initializer in const declaration
(3)具有变量提升但是会形成暂时性死区(报错)
//例如
console.log(a); //Uncaught SyntaxError: Missing initializer in const declaration
const a;
(4)具有块级作用域
//例如
if (true) {
// 块级作用域
const a = 1; //存在块级作用域
console.log(a); //a=1
}
(5)不可以修改初始值
//例如
const a = 1;
a=2;
console.log(a) //Uncaught TypeError: Assignment to constant variable.
(6)不可以在声明变量之前使用
//例如
console.log(a) //Uncaught SyntaxError: Missing initializer in const declaration
const a;
五、定义变量的要求
-
变量名必须以字母、美元符号($)或下划线(_)开头。
-
变量名长度不能超过255个字符。
-
变量名中不允许使用空格。
-
不要使用JavaScript中的关键字或保留字作为变量名。
-
变量名区分大小写
六、变量提升是什么
变量提升是JavaScript引擎在代码执行过程中的一种行为,它会将变量的声明提升到其所在作用域的最前面,也就是说,只要在这个作用域创建定义了这个变量,那么这个变量的位置不管处在哪,都会被提升到最顶部。只针对var变量,let和const是后面提出的避免变量提升污染变量。
七、函数作用域的概念
函数作用域又称局部作用域,只在当前的作用域生效,其他函数中和在函数外的地方都不能使用
八、块级作用域的概念
通过大括号{}来划分,即使用一对大括号包裹的一段代码,通过let和const定义的变量的作用域只在大括号中