不使用var声明变量,和使用var声明区别
JavaScript变量分为 局部变量 和 全局变量
简单来说
- 在函数中用var声明的变量即为 局部变量
- 在函数外用var声明的变量即为 全局变量
JS变量生存期:
生命周期从他们被声明时间开始, 局部变量会在函数执行以后比删除。
全局变量会在页面关闭后删除。
//案例一
var a = 123; // 全局变量
var b = 456; // 全局变量
console.log(a); // 123
console.log(b); // 456
console.log(window.a); // 123
console.log(window.b); // 456
//案例二
var a = 123; // 使用var声明
b = 456; // 不使用var声明
console.log(a); // 123
console.log(b); // 456
console.log(window.a); // 123
console.log(window.b); // 456
另外,使用var声明变量也叫显示声明,不用var声明变量也叫隐式声明
通过上面我们可以得到以下结论:
在函数外,不管是使用var声明变量,还是不用var声明变量,它们都是全局变量。
全局变量其实是在window对象中添加属性并赋值。
// 案例三
function my() {
var a = 123;
var b = 456;
console.log(a); // 123
console.log(b); // 456
console.log(window.a); // undefined
console.log(window.b); // undefined
}
my();
// 案例四
function my() {
var a = 123; // 使用var声明
b = 456; // 不使用var声明
console.log(a); // 123
console.log(b); // 456
console.log(window.a); // undefined
console.log(window.b); // 456
}
my();
console.log(b); // 456
在函数中,
- 使用var声明的变量为局部变量,
- 不用var声明的变量为全局变量
在函数外,
- 用var声明的变量为全局变量,
- 不用var声明的变量为全局变量