Rumah > hujung hadapan web > tutorial js > Melewati dengan rujukan kemahiran parameter_javascript objek JavaScript

Melewati dengan rujukan kemahiran parameter_javascript objek JavaScript

WBOY
Lepaskan: 2016-05-16 15:19:59
asal
1076 orang telah melayarinya

Saya menghadapi masalah hari ini, cara mempengaruhi perubahan parameter di luar fungsi, seperti:

<script>
  var myname = "wood";
  A(myname);
  document.write(myname);

  function A(n) {
    n = "Yao";
  }
</script>
Salin selepas log masuk

Hasil keluaran masih kayu, yang bermaksud bahawa apabila nama saya dihantar ke fungsi A, terdapat setara dengan salinan nama saya dalam badan fungsi dalam badan fungsi adalah berdasarkan salinan ini dijalankan.

Tetapi keadaannya berbeza Apabila parameter yang dihantar adalah tatasusunan dan objek, perubahan yang dibuat pada parameter dalam badan fungsi akan ditunjukkan dalam pembolehubah asal.

<script>
  var myname = ["wood"];
  A(myname);
  document.write(myname[0]);

  function A(n) {
    n[0] = "Yao";
  }
</script>
Salin selepas log masuk

Seperti yang anda lihat, elemen pertama tatasusunan friut telah ditukar dalam kod di atas.

Berikut ialah contoh objek:

<script>
  var myname = {name1:"wood"};
  A(myname);
  document.write(myname.name1);

  function A(n) {
    n.name1 = "Yao";
  }
</script>

Salin selepas log masuk

Ia boleh dilihat dengan jelas bahawa perubahan pada parameter dalam badan fungsi mempengaruhi pembolehubah asal, yang secara kualitatif berbeza daripada lulus parameter biasa. Perhatian khusus diperlukan.

Tetapi, apabila memberikan nilai kepada tatasusunan atau objek yang diluluskan di dalam badan fungsi, perubahan ini tidak akan ditunjukkan dalam pembolehubah asal di luar badan fungsi!

Sila lihat:

<script>
  var myname = {name1:"wood"};
  A(myname);
  document.write(myname.name1);

  function A(n) {
    n = {name1:"Yao"};
  }
</script>
Salin selepas log masuk

Menurut teori bahawa perubahan dalam fungsi di atas akan dicerminkan dalam pembolehubah asal, anda mesti berfikir bahawa nilai atribut name1 bagi pembolehubah nama saya telah berubah kepada 'Yao' selepas melaksanakan A(). Tetapi hasilnya agak sukar untuk ditelan.

Sebabnya ialah apabila operasi penugasan digunakan dalam badan fungsi, sistem mencipta pembolehubah bernama p. P ini adalah pembolehubah di dalam fungsi Sudah tentu, memberikan nilai kepadanya hanya berfungsi dalam badan fungsi Nama saya di luar masih nama saya yang asal.

Satu-satunya perbezaan antara langkah ini dan kod asal ialah sama ada untuk memberikan nilai baharu kepada parameter dalam badan fungsi atau menukar atribut parameter atau elemen tatasusunan.

Di bawah ini kami menggunakan kaedah menghantar objek untuk melaksanakan semula contoh output format digital jam:

<script>
  var mytime = self.setInterval(function() {
    getTime();
  }, 1000);
  //alert("ok");
  function getTime() {
    var timer = new Date();
    var t = {
        h: timer.getHours(),
        m: timer.getMinutes(),
        s: timer.getSeconds()
      }
      //将时间对象t,传入函数checkTime(),直接在checkTime()中改变对象中的值。
      //而无需再去接收返回值再赋值
    checkTime(t);
    document.getElementById("timer").innerHTML = t.h + ":" + t.m + ":" + t.s;
  }

  function checkTime(i) {
    if (i.h < 10) {
      i.h = "0" + i.h;
    }
    if (i.m < 10) {
      i.m = "0" + i.m;
    }
    if (i.s < 10) {
      i.s = "0" + i.s;
    }
  }
</script>

Salin selepas log masuk

Contohnya menggunakan fungsi setInterval() untuk memanggil acara muat semula dengan kerap, atau ia juga boleh dilaksanakan dengan menggunakan setTimeout() untuk memanggil secara rekursif dalam getTime().

Di atas adalah keseluruhan kandungan artikel ini saya harap ia akan membantu semua orang dalam mempelajari pengaturcaraan javascript.

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