一、全局变量
- 申明在函数之外的变量
- 申明变量时凡是没有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();