Rumah >hujung hadapan web >tutorial js >Adakah JavaScript Lulus dengan Nilai atau Rujukan?

Adakah JavaScript Lulus dengan Nilai atau Rujukan?

Barbara Streisand
Barbara Streisandasal
2024-12-21 08:23:10736semak imbas

Does JavaScript Pass by Value or by Reference?

JavaScript: Lulus Rujukan atau Nilai

Adakah JavaScript melewati rujukan atau lulus nilai?

JavaScript menggunakan pendekatan hibrid, menghantar primitif mengikut nilai dan objek (termasuk tatasusunan) dengan "salinan rujukan."

Memahami Pelulusan Nilai

Jenis data primitif (cth., rentetan, nombor, boolean) diduplikasi dan dihantar sebagai nilai bebas. Menukar nilai primitif yang diluluskan dalam fungsi tidak menjejaskan pembolehubah asal.

Memahami Rujukan-Melalui

Alamat memori rujukan objek, dan apabila diluluskan, ia merujuk ke objek yang sama dengan pemanggil. Perubahan yang dibuat pada kandungan objek dalam fungsi akan ditunjukkan dalam objek asal. Walau bagaimanapun, memberikan rujukan baharu (cth., ref = {}) hanya akan mengubah suai salinan tempatan rujukan, bukan yang asal.

Contoh Penggunaan

Dalam coretan kod yang disediakan:

  • fungsi bentuk mengambil objek konfigurasi, mengekstrak sifat dan mengembalikan yang baharu objek.
  • fungsi segi empat tepat memanjangkan bentuk dengan memperkenalkan sifat tambahan dan mengembalikan objek baharu.
  • Nama sifat primitif (dalam myShape dan myRec) kekal tidak terjejas dalam fungsi, kerana ia melalui nilai.
  • Harta objek my (dalam myRec) mewakili rujukan yang disalin kepada objek asal, membenarkan pengubahsuaian kandungannya (cth., my.l dan my.w). Menetapkan rujukan baharu tidak akan menjejaskan objek asal.
  • Fungsi kawasan() menggunakan rujukan setempat kepada saya untuk mengira dan mengakses sifat objek yang dikemas kini.

Atas ialah kandungan terperinci Adakah JavaScript Lulus dengan Nilai atau Rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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