js 函数作用域链

作用域链: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

未使用var关键字定义的变量都是全局变量。

全局变量都是window对象的属性

你可能感兴趣的:(js 函数作用域链)