美文网首页
第七章 块级作用域、私有变量

第七章 块级作用域、私有变量

作者: A郑家庆 | 来源:发表于2018-06-08 16:11 被阅读0次
    • 模仿块级作用域
    • 私有变量
        js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代码执行完之后里面的变量就会被销毁,里面的变量不会被其他地方引用,但是js不同,例如:
    function output () {
        for (var i = 0; i<10;i++) {
          console.log(i)
      }
    var i
    console.log(i)
    var i = 2
     console.log(i)
    }
    

    如果js是块级作用域那么循环完就无法打印i,因为已经被销毁了,所以js没有块级作用域。上面第二个i为10,第三个i为2,为什么会不一样,因为js从来不会告诉你是否多次声明了同一个变量;遇到这种情况,它只会对后续的声明视而不见,不过,如果声明之后初始化了就会改变原有的值。
      函数声明后面不能跟一对圆括号,表达式可以,例:

    function () {
    return 1
    }()      // 报错
    
    (function () {
    return 1
    })()
    

    第一种会报错,因为js将function关键字当做一个函数声明的开始,而函数声明后面不能跟圆括号。
    js模仿块级作用域(私有作用域),如下

    function output () {
       (function () {
          for (var i = 0; i<10;i++) {
          console.log(i)
         }
      })()
    console.log(i)
    }
    

    第一个会打印出i,但是第二个打印不出来而且会报错,因为匿名函数执行完就会被销毁。在一个由很多开发人员共同参与的大型应用程序中,过多的全局变量和函数很容易导致命名冲突,而通过创建私有作用域,每个开发人员既可以使用自己的变量,又不必搞乱全局作用域。

    私有变量

      js中私有变量就是函数的参数、局部变量和函数内部定义的其他函数。我们把有权访问私有变量和私有函数的共有方法称为特权方法。

    相关文章

      网友评论

          本文标题:第七章 块级作用域、私有变量

          本文链接:https://www.haomeiwen.com/subject/vsoosftx.html