javascript - Soalan mengenai penutupan fungsi dan menghantar fungsi sebagai parameter
世界只因有你
世界只因有你 2017-06-26 10:50:31
0
3
822

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未定义
  
世界只因有你
世界只因有你

membalas semua(3)
Ty80

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

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;
}
var num = 1;
console.log(func(fn)[1]()); //1
给我你的怀抱

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.

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