JavaScript之模仿块级作用域

时间:2022-04-24
本文章向大家介绍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 () {
    
})()