cari

Rumah  >  Soal Jawab  >  teks badan

Apakah perbezaan antara memberikan fungsi secara langsung kepada pembolehubah dan merujuk fungsi?

Apakah perbezaan antara memberikan terus fungsi kepada pembolehubah dan merujuk fungsi?

Contohnya: Fragment 1 dan Fragment 2

Klip 1

function fn(){
  var box = document.getElementById("box");
  box.onclick = function(){
      console.log(111);
  };
  box = null;
}

Klip 2

function fn(){
  var box = document.getElementById("box");
  box.onclick = click;
}

function click(){
  console.log(111);
}

Fungsi dalam onclick dalam serpihan 1 membenarkan akses kepada pembolehubah dalam fn, tetapi fungsi onclick dalam serpihan 2 tidak membenarkan akses kepada pembolehubah dalam fn Ini yang saya fikir, kerana klik dalam serpihan 2 ditakrifkan di luar fn fn tidak boleh diakses, jadi ini bermakna tugasan untuk onclick dalam Fragmen 2 sebenarnya adalah rujukan dan bukannya salinan?

大家讲道理大家讲道理2742 hari yang lalu516

membalas semua(2)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:35:08

    Tidak, tidak, anda tidak memanggil kaedah atau lulus parameter, jadi teras kedua-dua contoh ini bukanlah isu rujukan/salinan

    Ini adalah masalah skop (rantai prototaip)

    Pembolehubah mempunyai hak akses yang berbeza dalam skop yang berbeza:
    Skop kanak-kanak boleh mengakses skop ibu bapa
    Skop ibu bapa tidak boleh mengakses skop kanak-kanak
    Skop pada tahap yang sama tidak boleh mengakses satu sama lain

    balas
    0
  • PHPz

    PHPz2017-05-19 10:35:08

    Saya rasa anda mungkin perlu mengetahui lebih lanjut tentang skop pembolehubah Skop js sudah ditentukan apabila ia ditakrifkan.

    Klip 1

    function fn(){
      var box = document.getElementById("box");
      box.onclick = function(){
          console.log(111);
      };
      box = null;
    }

    Panggil balik onclick yang terikat pada kotak berada di dalam fungsi fn, jadi semua pembolehubah tempatan di dalamnya boleh diakses oleh panggilan balik. onclick回调,是在fn的函数内部,因此其内部所有局部变量都能被该回调访问到。

    片段2中

    function fn(){
      var box = document.getElementById("box");
      box.onclick = click;
    }
    
    function click(){
      console.log(111);
    }

    click方法在fn函数外部,与之同级,由于定义时,click

    Klip 2🎜 rrreee 🎜Kaedah klik berada di luar fungsi fn dan berada pada tahap yang sama kerana klik belum lagi berada di dalam fn apabila ia ditakrifkan, skop dalamannya tidak boleh diakses . 🎜

    balas
    0
  • Batalbalas