函数作用域和声明提前
var scope = ‘global‘;
function f()
{
console.info(scope); //输出undefined
var scope = ‘local‘;
console.info(scope); //输出 local
}
上述代码等价于
function f()
{
var scope;
console.info(scope);
scope = ‘local‘;
console.info(scope);
}
将函数内的变量声明“提前”至函数体顶部(但不涉及赋值),同时变量初始化留在原来的位置
该特性被非正式的成为“声明提前”,在函数内声明的所有变量在函数体内始终是可见的!
2. 作用域链
每一段js代码都有一个与之关联的作用域,这个作用域是一个对象列表或链表!这组对象定义了这段代码“作用域中”的变量!