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

2018-06-08  本文已影响0人  A郑家庆
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中私有变量就是函数的参数、局部变量和函数内部定义的其他函数。我们把有权访问私有变量和私有函数的共有方法称为特权方法。

上一篇 下一篇

猜你喜欢

热点阅读