匿名函数中的Javascript变量作用域

时间:2019-07-12 12:19:32

标签: javascript

我对下面为什么输出“ 1”感到困惑。

如果我使用var在myFunc中声明a,则应将a的范围限制为该函数。

在匿名函数中(在setInterval调用中)调用“ a”是一个不同的函数,那么为什么在myFunc的范围内考虑呢?

是因为该函数是匿名的吗?我希望a可以用于其他功能,除非使用了bind()

myFunc = function(){

    var a = 1;

    var int = setInterval(function () {

        console.log(a);

    }, 5);    

}

1 个答案:

答案 0 :(得分:0)

绑定到setInterval的函数是一个闭包,当在其自己的作用域中未知的内容时,它将在外部作用域(在您的情况下为myFunc范围中)