javascript中模仿块级作用域

  学过 javascript 的都知道 javascript 里面没有块级作用域的概念,这就意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的,看下面的例子:

function outPutNumber(count) {
      for(var i = 0; i < count; i ++) {
            alert(i);
      }
      alert(i);    //计数  
}

  上面的函数中定义了一个 for 循环,而变量 i 的初始值被设置为0。在 java、c++等语言中,变量 i 只在 for 循环中定义和使用,当 for 循环结束后 变量 i 就被销毁了,但是在 javascript 中,变量实际上实在函数 outPutNumber 中定义的,所以当 for 循环结束后 i 变量还存在,因此从变量 i 定义开始,就可以在函数内部随处访问它。

  如果我们想临时使用一些变量,在使用后便把变量销毁掉,我们可以使用匿名函数来模仿java、c++等语言中的块级作用域,看下面的例子:

function outPutNumber(count) {
      (function() {
            for(var i = 0; i < count; i ++) {
                 alert(i);
            }
      })();
      alert(i);    //这里会提示 i is not defined
}
原文地址:https://www.cnblogs.com/wgl1995/p/7526818.html