javascript - Mengapa keputusan 3 bukannya 2?
学习ing
学习ing 2017-06-26 10:57:37
0
4
741
function F(){
    var arr=[],i;
    for(i=0;i<3;i++){
        arr[i]=function(){
            return i;
        };
    }
    return arr;
}

arr[0]();//3
arr[1]();//3
arr[2]();//3
学习ing
学习ing

membalas semua(4)
迷茫

for(i=0;i<3;i++){循环体}执行过程是赋初值0,然后执行判断语句i<3,为true的话,执行循环体,循环体执行完之后执行i++;所以当i执行到2的时候,i<3为true,执行循环体,然后i++,此时i等于3,然后判断i<3,判断为false,不执行循环体,退出循环,此时i=3;

巴扎黑

Selepas gelung terakhir, i++ menukar i kepada 3

Ty80

Soalan ini boleh dilihat dengan mudah menggunakan titik putus Sebenarnya, ia adalah masalah pemasaan pelaksanaan fungsi , saya hanya boleh untuk 3.

学习ing

js dilaksanakan secara berurutan, pertama, semua gelung dilaksanakan semasa proses pelaksanaan, arr[0]= function(){return i;}, arr[1]= function(){return i;}, arr[2] = function(){return i;}Pada masa yang sama, atur cara i selepas gelung ke 3, dan kemudian panggil arr[0]() dan panggilan lain Pada masa ini, i dalam skop ialah 3, jadi ia akan sentiasa 3.

PS: Untuk soalan ini, anda harus melaksanakan arr = F() dahulu, jika tidak, ralat akan dilaporkan~~

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan