zoukankan      html  css  js  c++  java
  • JavaScript之模仿块级作用域

    简介:在JavaScript中没有块级作用域的概念。这意味这在块语句中定义的变量,实际上在包含函数中而非语句中创建的。证明代码如下:

    function outputNumbers(count){
        for(var i=0;i<count;i++){
            break;
        }
        alert(i);
    }
    outputNumbers(3); //输出:0

     下面来分析上面这个函数,上面的函数中定义了一个for循环,在Java,C#,C++等语言中,变量i只会在for循环中有定义,循环一旦结束,变量i就会被销毁,可是在JavaScript中,变量是定义在outputNumbers的活动对象中的,因此从他有定义开始,就可以在函数的内部访问到它,即使你重新申明变量,只要不给变量赋值,他只会对后面的申明视而不见,代码如下:

    function outputNumbers(count){
        for(var i=0;i<count;i++){
            break;
        }
        var i;
        alert(i);
    }
    outputNumbers(3); //输出:0

    而JavaScript中的匿名函数可以用来模仿块级作用域并避免这个问题。

    用作块级作用域(通常成为私有作用域)的匿名函数语法如下所示:

    (function () {
        
    })()
  • 相关阅读:
    Disharmony Trees HDU
    Xenia and Bit Operations CodeForces
    Gym
    背包入门
    搜索入门
    Farm Tour POJ
    Flow Problem HDU
    Hie with the Pie POJ
    Building a Space Station POJ
    kuangbin 最短路集合
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5909597.html
Copyright © 2011-2022 走看看