关于let作用域

当一个花括号内声明用let,此时后花括号内的所有指向(用let声明的变量)的变量的作用域都被局限到了这或括号内;

例如:

  for(let i = 0;i<10; ++i){

        function test(){

            console.log(i);

    }

}

test();//结果为9,因为test是全局函数,但是i生成了块级作用域,每次生成test函数都会覆盖前一个test函数最后test的i就是最后的i了

var arr = [];

 for(let i = 0;i<10; ++i){

        arr[i] = function(){

            console.log(i);

    }

}

arr[5]();//结果是5,因为当为每一个arr[]的元素创建函数时,此时函数的作用域是i创建的这个块级作用域中,当调用arr[5]();他会找创建这个函数时的i,所以就是5;

最后找到的一个文章:https://blog.csdn.net/wlk2064819994/article/details/79772388


猜你喜欢

转载自blog.csdn.net/qq_20834787/article/details/79926924