作用域链:JavaScript需要查询一个变量x时,首先会查找作用域链的第一个对象,如果以第一个对象没有定义x变量,JavaScript会继续查找有没有定义x变量,如果第二个对象没有定义则会继续查找,以此类推。
函数体内部,局部变量的优先级比同名的全局变量高。
JavaScript没有块级作用域。
函数中声明的变量在整个函数中都有定义。下面这个例子
var x = 1;
function rain(){
alert(x);// undefined
var x = "rain_man";
alert(x);// rain_man
}
// 原因是在rain函数体内重新定义了局部变量x,
// 因此在rain函数体内隐藏了同名的全局变量,
// 故,第一个是 undefined