求指點,關(guān)于閉包的作用域問題,是這樣的,在執(zhí)行這段代碼的時候,我在google上監(jiān)測變量,發(fā)現(xiàn)一個問題,for(var a = 0;a < 10;a++){
console.log(arr[a]());}在下面這個閉包(作用域2)被調(diào)用的時候可以訪問到他的包含作用域test(作用域1)的變量i以及全局作用域(作用域3),但是如果直接在運行時訪問變量j的話是訪問不到的,js引擎在解析到閉包中i變量的時候發(fā)生了什么事情,function (){return i;}<script>function test(){ //1 塊作用域1 變量 i,arr var arr = []; var j = 0; for(var i = 0;i < 10;i++){ //arr[i] 存儲的是匿名方法的引用,沒有立刻執(zhí)行 arr[i] = function(){ //作用域2 return i; //breakpoint }; } // i = 10 arr[i] = function(){return i;} for(var a = 0;a < 10;a++){ console.log(arr[a]()); }}//作用域3 全局作用域test()var k =1; </script>Q:執(zhí)行作用域3的時候為什么能訪問到作用域2(test 作用域)中的 i, 作用域1(全局作用域)中的k,為什么不能訪問到作用域2中的j ?
javascript 匿名函數(shù)創(chuàng)建閉包是js引擎是怎么處理的?
皈依舞
2018-09-14 09:09:50