JavaScript变量作用域

JavaScript变量作用域

  • 未用var声明的变量是全局变量,是window对象的属性
  • 使用var声明的变量是有作用域的:
  • 在函数体内部声明,则作用域为整个函数体
  • for循环语句块中无法定义属于它的局部作用域的变量,因为作用域是以函数为基本分隔单位。
  • 如果两个独立的函数各自声明了同名变量,则各自独立,互不干扰
  • 嵌套函数中,内部函数可以访问外部函数的变量,反之外部函数不能访问内部函数的变量
  • 嵌套函数中,如果内部函数和外部函数变量重名,则在内部函数中,内部函数的变量将覆盖外部函数的变量;而外部函数访问到的依然是外部函数的变量
  • 上面一条说明了:JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。
  • JavaScript会扫描整个函数体,把所有声明的变量“提升”到函数顶部;但是,并不会“提升”变量的初始化赋值

变量空间的污染

全局变量会绑定到window对象上,不同的JavaScript文件如果使用了相同的全局变量,或定义了相同的全局函数,则会造成命名冲突。

  • 一个方法是把自己所有的变量和函数全部绑定到一个全局变量中。[推荐]
  • 另外一个方法是增加自己独特的变量命名前缀/后缀
原文地址:https://www.cnblogs.com/weaming/p/5160817.html