Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang hujah, penerima panggilan, pemanggil dalam javascript_Pengetahuan asas

Penjelasan terperinci tentang hujah, penerima panggilan, pemanggil dalam javascript_Pengetahuan asas

WBOY
Lepaskan: 2016-05-16 15:10:40
asal
1313 orang telah melayarinya

Apakah hujah?

argumen ialah objek seperti tatasusunan yang dicipta apabila fungsi dipanggil tetapi bukan objek tatasusunan Ia menyimpan parameter yang sebenarnya dihantar ke fungsi dan tidak terhad kepada senarai parameter yang diisytiharkan oleh fungsi.

Nima, apa maksud awak?

Tulis demo dan lihat kod di bawah

<!DOCTYPE html>
  <head>
    <title>arguments</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </head>
  <body>
    <script>
      function obj(){
        //利用instanceof判断arguments
        console.log( 'arguments instanceof Array&#63; ' + (arguments instanceof Array) );
        console.log( 'arguments instanceof Object&#63; ' + (arguments instanceof Object) );
        console.log(arguments);
      }
      obj();
    </script>
  </body>
</html>

Salin selepas log masuk

Jalankan kod ini dan gunakan penyahpepijat krom untuk mendapatkan gambar berikut

Saya menggunakan instanceof untuk menentukan hujah Daripada kesan cetakan, hujah ialah objek.

Kemudian kembangkan hujah yang dicetak Seperti yang anda lihat daripada gambar di atas, ia termasuk banyak atribut, termasuk penerima panggilan.

Seterusnya, kami mengubah suai kod di atas dan menghantar parameter kepadanya apabila memanggil fungsi obj, tetapi fungsi obj tidak mempunyai parameter.

Lihat kod khusus di bawah

<!DOCTYPE html>
  <head>
    <title>arguments</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </head>
  <body>
    <script>
      function obj(){
        console.log( 'arguments instanceof Array&#63; ' + (arguments instanceof Array) );
        console.log( 'arguments instanceof Object&#63; ' + (arguments instanceof Object) );
        console.log(arguments);
      }
      //向obj传递参数
      obj('monkey','love',24);
    </script>
  </body>
</html>

Salin selepas log masuk

Melalui penyahpepijat krom, anda boleh mendapatkan gambar di bawah

Seperti yang anda lihat, hujah mengandungi tiga parameter "monyet", "cinta" dan 24 yang kami berikan kepadanya.

Jadi, mengapa argumen ialah parameter yang disimpan sebenarnya dihantar kepada fungsi, bukannya parameter yang diisytiharkan oleh fungsi.

Apakah yang dipanggil?

callee ialah ahli objek argumen dan nilainya ialah "Objek fungsi sedang dilaksanakan".

Apakah maksudnya?

Mari kita tulis demo dan lihat hasilnya.

Lihat kod dan gambar rajah hasil di bawah

<!DOCTYPE html>
  <head>
    <title>callee</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </head>
  <body>
    <script>
      function obj(){
        //利用callee
        console.log(arguments.callee);
      }
      obj();
    </script>
  </body>
</html>

Salin selepas log masuk

Seperti yang anda boleh lihat daripada gambar di atas, arguments.callee ialah fungsi yang menunjuk ke objek argumen, iaitu obj dalam kes ini.

Apakah pemanggil?

pemanggil ialah atribut objek fungsi, yang menyimpan fungsi yang memanggil fungsi semasa.

Perhatikan, ia adalah panggilan. Ia bukan sahaja termasuk penutupan. Jika tiada fungsi induk, ini adalah batal.

Ia masih sama seperti dahulu, mari tulis demo sepanjang masa.

Kod adalah seperti berikut:

<!DOCTYPE html>
  <head>
    <title>caller</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  </head>
  <body>
    <script>
      //child是parent内的函数,并在parent内执行child
      function parent(){
        function child(){
          //这里child的父函数就是parent
          console.log( child.caller );
        }
        child();
      }
      //parent1没有被别人调用
      function parent1(){
        //这里parent1没有父函数
        console.log(parent1.caller);
      }
      //parent2调用了child2
      function parent2(){
        child2();
      }
      function child2(){
        console.log(child2.caller);
      }
      /*执行
       parent里嵌套了child函数
       parent1没有嵌套函数
       parent2调用了child2,child2不是嵌套在parent2里的函数
      */
      parent();
      parent1();
      parent2();
    </script>
  </body>
</html>

Salin selepas log masuk

Buka penyahpepijat krom dan anda boleh melihat pemaparan

Berdasarkan kod dan gambar di atas, adakah anda memahami pemanggil sekarang?

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan