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 () {
        
    })()
  • 相关阅读:
    经典问题的非经典解法
    经典问题之树的深度
    35、AndroidView的滑动方式
    30、Android属性动画
    31、Android矢量动画
    36、AndroidCanvas画布
    27、AndroidEventBus
    28、AndroidRxjava
    32、Android事件分发机制
    29、Android基本动画
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/5909597.html
Copyright © 2011-2022 走看看