1.Penerangan:
Saya ingin mendapatkan hasil tatasusunan fungsi Pertama, fungsi func menambah fungsi tanpa nama pada hasil tatasusunan (setiap fungsi tanpa nama menyimpan nombornya sendiri)
Tetapi saya menghantar parameter kepada fungsi tanpa nama selepas pemulangan, yang sama dengan hanya menggantikannya Mengapa keputusan berbeza?
function func(){
var result =[] ;
for(var i=0;i<3;i++){
result.push(
function (num){
return function (){
return num
}
}(i)
)
}
return result
}
console.log(func()[1]()) //这样我就能得到各自函数里的num
Seterusnya, saya lulus fungsi tanpa nama selepas pemulangan sebagai parameter, tetapi saya tidak boleh mendapatkannya.
function func(fn){
var result =[] ;
for(var i=0;i<3;i++){
result.push(
function (num){
return fn;
}(i)
)
}
return result
}
function fn(){
return num
}
console.log(func(fn)[1]()) //报错提示num未定义
Oleh kerana fn dalam sekeping kod kedua ditakrifkan dalam persekitaran global.
Anda boleh lihat kod di sini dan di bawah, saya harap ia akan membantu anda
Ini adalah masalah skop yang sangat mudah Parameter formal fungsi yang ditakrifkan dalam gelung anda hanya berfungsi dalam fungsi ini.
Fungsi tidak boleh ditakrifkan di bawah gelung atau keadaan pertimbangan, kerana banyak masalah yang tidak dijangka akan berlaku. Keluarkan fungsi anda dan tentukannya, dan anda akan mendapati bahawa logiknya lebih jelas.
Masalah skop nombor, JavaScript mempunyai skop fungsi, num berada di dalam fungsi pertama, dan fungsi kedua di luar fungsi pertama, maka fungsi kedua tidak boleh mendapatkan nombor.