您的位置:首页 > Web前端 > JavaScript

JavaScript几个作用域问题

2014-02-07 17:03 274 查看
1、

var a = 0 ;

function f(){
a = 1;
console.log(a); //全局变量a

}

console.log(a); //全局变量a

f();


 输出结果为:1 1 ,function中未声明直接赋值的a为作用域window的全局变量,很好理解

2、

var a = 0;
function test(){
var a;
console.log(a); //局部变量a
a = 1;
console.log(a); //局部变量a

}
test();
conosle.log(a); //全局变量a


  输出结果为:undefined 1 0

3、

var a =0;
function test(){
console.log(a);
var a = 1;
console.log(a);
}

test();
console.log(a);


  输出结果为:undefined 1 0

总结:

1. JavaScript中只存在两种作用域:全局作用域window和函数作用域function,外部的function domain嵌套内部的function domain,这就是闭包原理;

2. function domain中未使用var事先声明而直接赋值或调用的变量会访问上一层作用域中的同名变量,一直到window全局domain,如果找不到则会报错;

3. var声明变量的执行优先级是最高的,所以在例子3中test()中第一次console.log(a)执行之前,已经事先执行了var a声明,但并未执行a = 1赋值,所以此时输出undefined
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: