变量
概念:
变量是用来临时存储数据的容器。本质上来说,变量是没有数据类型的。但是一旦向变量中存储了数据,那么变量就存在了类型。变量的类型就变为你存储数据的类型。
(变量中存的数据是声明类型,变量就是声明类型)
在js中不存在2个相同名称的变量,后声明的替换前声明的。相当于重新声明一个变量。
临时存储数据便用变量,想要永久性存储数据就要使用数据库
命名规范:
命名尽量词能达意,遵循合法标识符。不使用关键字,不使用保留字,开头不大写(js大多自带方法都是大写开头),js大小写敏感,不能用数字开头,不能包含星号,不能包含加减号或连线词,可用下划线
变量命名可用中文 不推荐使用,不通用,比正常代码要多一步(转为万国码unicode),再转为2进制
标识符:
最常见的标识符就是变量名
关键字:
js本身使用的名字,一旦一个词被定义为关键字,那么我们就不能使用
例如:var let if 等等
保留字:
js负责交互,html负责结构,css负责样式
声明变量:
ES5:
var 变量名;
ES6:
let 变量名;
初始化:
变量创建成功后,但没有存储数据,这个变量叫 尚未初始化
推荐写法:
一次性声明多个变量
例如:
var a=1,b=2,c=5;
或
var a,b,c;
存储数据:
例:
var a=1;
a=2;
存储机制是内存中再开一个存2的空间。存1的空间不用了,被自动销毁。而不是直接在存1的空间内把1替换为2。
重新声明:
例:
var x=1
var x;
console.log(x);//x的值为1
上面的例子是重新声明变量,却没有存储值。那么第为此的声明相当于无效的声明,所以x的值仍为1。
变量提升:
只适用于var声明的变量,ES6的let不存在变量提升机制
当我们宿主环境在读取和执行我们的代码之前,会进行预解析。也就是找到声明的变量,放到代码的最前端。
例1:
console.log(d);//返回undefined,表示未定义
var d="aa";
上面的代码不会报错,原因是发生了变量提升,其实际的执行情况为:
var d;
console.log(d);
d="aa";
因为变量d赋值发在打印之后,所以输出undefined。但已经声明了变量,所以不会报错。
预解析:(预解析只是个过程,真实情况叫变量提升)
浏览器在读取之前会快速找到所有的变量,然后把声明的(var)操作提到代码的最前面。赋值操作仍在原本位置。
生命周期:
从开始到结束的时间
一个变量的生命周期是指这个变量从被创建到被js销毁的周期,就称为生命周期。
若再次加载页面,等同于再次重新声明一个变量。
局部变量生命周期:
在函数执行完毕后结束
全局变量生命周期:
页面关闭后结束
存储位置:
变量都存储于内存的栈(stack)中
常量:
const+名称
例如:const a
一个不可修改的变量,修改就会报错
赋值:
js中=不代表等于,称为赋值
var name 声明一个叫name的变量
name=“a”; 给变量name 存储数据
等号左边称为 变量
等号右边称为 表达式
以;结尾