作用域:
变量可以起作用的范围。
分类:
根据作用域不同,可以分为全局变量和局部变量。
全局变量:
在整个文档中都能被访问到(在函数外声明的变量或者声明变量时没有使用var)。
举例:
1.证明全局变量在整个文档中都能被访问到,代码如下:
var a=100; //全局变量
document.write(a+"<br>");
function foo(){
document.write(a);//全局变量
}
foo();
结果如图所示:
2.声明变量时没有使用var,使局部变量变为全局变量,代码如下:
function show(){
a=20;//全局变量
console.log(a);
}
show();
console.log(a);
结果如图所示:
局部变量:
只在固定的代码片段内可访问到的变量(最常见的例如函数内部)。
1.证明局部变量只在固定的代码片段内被访问到,代码如下:
function show(){
var b=20;//局部变量
console.log(b);
}
show();
console.log(b);
结果如图所示:
就近原则:
代码如下:
var a = 20; //全局变量
function show(a) {
var b = 50;
//局部变量
console.log(a); //就近原则
}
show(30);
console.log(a);
console.log(b);
运行结果如图:
变量提升:
代码如下:
if(true){
var a=30;//全局变量
console.log(a);
console.log(b);//undefined
}else{
var b=20;//全局变量
}
console.log('out:',a);
console.log('out:',b);
以上代码经过变量的提升,a和b都变为了全局变量,以上代码等同于:
var a,b;
if(true){
a=30;
console.log(a);
console.log(b);//undefined
}else{
b=20;
}
console.log(‘out:’,a);
console.log(‘out:’,b);
运行结果如图所示: