Apakah perbezaan antara memberikan fungsi secara langsung kepada pembolehubah dan merujuk fungsi?
大家讲道理
大家讲道理 2017-05-19 10:33:08
0
2
511

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?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
我想大声告诉你

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

PHPzhong

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 . 🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan