变量
- 变量(variable)是用于存放数据的容器,通过变量名获取数据、修改数据。
- 本质:变量是程序在内存中申请的一块用来存放数据的空间。
声明
- 只声明未赋值的变量,默认值为
undefined。
var age; // 声明一个名称为age的变量
age; // undefined
赋值
var age;
age = 10; // 给age这个变量赋值为10
初始化
- 如果变量未经
var声明直接赋值,则会创建为一个全局变量。
var age = 10; // 声明的时候直接赋值
name = '张三' // 全局变量 相当于在全局环境下 var name = '张三';
更新
- 重新赋值后原有的值会被覆盖,以最后一次赋值为准。
var age = 10;
age = 20;
单一var模式
- 只写一个
var,通知内存一次申请多个内存空间。
var a = 10,
b = 20,
x = a + b; // , 运算符优先级大于赋值
var声明变量情况汇总
| 变量 | 使用 |
|---|---|
| var a; (只声明,不赋值) | undefined |
| 不声明不赋值 | 报错 |
| a = 10; (不var声明,只赋值) | 正常(默认提升为全局变量) |
变量声明提升
- js引擎的工作方式是,先解析代码获取所有被声明的变量,然后再一行一行的执行。这就会导致所有变量的声明语句都会提升到代码头部,这种方式叫做变量声明提升。
console.log(a);
var a = 1;
// 上面代码相当于
var a;
console.log(a);
a = 1;
变量 a 的声明被默认提升到了头部,相当于 a 以声明,但未赋值。所以是 undefined。
区块
- js使用大括号{...}将多个相关的语句组合在一起,称为区块。
{
var a = 1;
}
console.log(a); // 1 区块外部依然可以访问
1.区块对于使用 var声明的变量不构成单独的作用域,与不使用区块没有任何区别。
2.变量只有在函数中被声明的才是局部变量,否则一律是全局变量。