【JavaScript】变量作用域

Dec 08 2015 前端

背景知识:

1.JavaScript不支持块级作用域
JavaScript的函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的

function hello() {
for (var i = 0; i < 10; i++) {
// doSomething...
}
//输出10,在支持块级作用域的语言中这里会报错
console.log(i);
}

2.声明提前:JavaScript函数里申明的所有变量都被提前至函数体顶部

var scope = 'global';
function test() {
// 输出undefined,这里scope只是申明,还没有被赋初值
console.log(scope);
//scope在这里被赋初值,但scoop的申明发生在函数体顶部
var scope = 'local';
// 输出local
console.log(scope);
}

该函数等价于:

var scope = 'global';
function test() {
var scope;
console.log(scope);
scope = 'local';
console.log(scope);
}

JavaScript