Isu penutupan JavaScript
滿天的星座
滿天的星座 2017-05-19 10:33:04
0
4
447
**为什么在查找到i的时候i变成了3;**

function outer(){
            for (var i = 0,arr=[];i<3;i++){
                arr[i] = function(){
                    return i;
                }                            
            }
            return arr;
        }
        var getNum = outer();
        console.log(getNum[0](),getNum[1](),getNum[2]());
滿天的星座
滿天的星座

membalas semua(4)
刘奇

Oleh kerana fungsi tanpa nama anda(){return i;} tidak dilaksanakan, i di sini tidak ditentukan, dan kemudian return arr, ini ialah function(){return i;} yang disimpan dalam tatasusunan ]() ialah apabila di atas untuk (var i = 0,arr=[];i<3;i++){} dilaksanakan, i=3; jadi getNum[0](),getNum[1](), The output getNum[2]() ialah 3.

Ty80

Itulah sekarang Masalah penutupan diselesaikan dengan cara yang sama

.
function outer(){
            for (var i = 0,arr=[];i<3;i++){
                arr[i] = (function(index){
                    return function() {
                        console.log(index)
                    };
                })(i)                   
            }
            return arr;
        }
        var getNum = outer();
        console.log(getNum[0](),getNum[1](),getNum[2]());
小葫芦

Oleh kerana i ialah pembolehubah persisian, ia hanya ditemui semasa membuat panggilan.
Dan apabila anda memanggilnya, gelung telah tamat dan nilai i sudah 3, jadi anda hanya boleh mendapat 3

洪涛
function outer(){
    for (let i = 0,arr=[];i<3;i++){
        arr[i] = function(){
            return i;
        }                            
    }
    return arr;
}
var getNum = outer();
console.log(getNum[0](),getNum[1](),getNum[2]());

Masalah menentukan domain

var ditukar kepada let

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!