一、全局变量
- 申明在函数之外的变量
 - 申明变量时凡是没有var关键字,而直接赋值的变量均为全局变量
 
二、局部变量
- 申明在函数体中的变量,并且只能在当前函数体内访问
 
三、实例
function test() {
 a = 30; //没有用var声明变量,为全局变量
 var b = 20;
 }
test();
console.log(“a=”+a); //这里很明显,a为全局变量 输出a=30
console.log(“b=”+b);//b为局部变量,故在函数test外调用是,提示未定义
var a = 1;
function test() {
 console.log(“a=”+a); //这里a为undefined
/函数中声明的变量在整个函数中都有定义。如果函数内部有定义变量,即使在定义之前输出但会先执行后面定义语句,然后判断输出结果,所以说声明的变量在整个函数中都是起作用的。/
 var a = 2;
 }
test();//输出undefined
局部变量a可以覆盖全局变量a
var a=1;
 function main(){
 var a=2;//局部变量
 console.log(a);// 覆盖输出2
 }
main();
console.log(a);//1
javascript没有块级作用域
function test(){
for(var i = 0 ; i < 3 ; i++){1//i=0,1,2,最后执行到i=3时退出循环}
console.log(i);//3
}
test();与C、C++、java则会输出0
变量提升
var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值
console.log(global); // undefined
global = ‘global’; // 此时才赋值
console.log(global); // 打印出globalfunction fn () {
var a; // 变量提升,函数作用域范围内
console.log(a);
a = ‘aaa’;
console.log(a);
}
fn();