cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Soalan mengenai penutupan fungsi dan menghantar fungsi sebagai parameter

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

membalas semua(3)saya akan balas

  • PHP中文网

    PHP中文网2017-06-26 10:52:31

    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

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:52:31

    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.

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:52:31

    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.

    balas
    0
  • Batalbalas