作用域

Posted qqinhappyhappy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域相关的知识,希望对你有一定的参考价值。

作用域

  • 变量作用域:一个变量的作用域就是代码中定义变量的区域。
    • 全局变量:在全局中定义的变量拥有全局作用域
    • 局部变量:在函数内部定义的变量为局部变量,具有局部作用域
局部变量的优先级高于全局变量,当全局变量与局部变量重名时,全局变量会被局部变量覆盖
var color='red'//声明一个全局变量

    function fun(){
        var color='yellow'//声明一个局部变量

        console.log(color)
    }

    fun()//yellow
  • 函数作用域:ES6之前由于JS中没有块级作用域,而是取代的使用了函数作用域。
    • 在函数中声明的变量都贝贝提升至函数体的顶部,即为“声明提前”(发生在JS预编译阶段)
    • 所有在函数中声明的变量在函数体中始终是可见的,这意味着变量在声明之前就可以使用它
    function test(){
          console.log(i)//undefined 表示定义但未赋值
          for (var i = 0; i < 10; i++) {
              console.log(i)//0 1 2 3 4 5 6 7 8 9 
          }
          console.log(i)//10
      }
      test()
    虽然看似变量i是在for循环时才被定义,实际上由于变量提前变量i在函数顶部就已经被定义,所以在整个函数体中都以访问i
  • 块级作用域:每一个花括号中的代码都有其对应的作用域,变量在声明它们的代码段之外不可见

以上是关于作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

作用域是什么?

JavaScript 作用域 与 作用域链

JS---闭包

angularjs作用域之transclude

Python - 模块