Rumah >hujung hadapan web >tutorial js >Adakah JavaScript Lulus Pembolehubah mengikut Nilai atau Rujukan, dan Bagaimana Tingkah Laku Ini Boleh Diterangkan?

Adakah JavaScript Lulus Pembolehubah mengikut Nilai atau Rujukan, dan Bagaimana Tingkah Laku Ini Boleh Diterangkan?

Susan Sarandon
Susan Sarandonasal
2024-12-31 19:54:14834semak imbas

Does JavaScript Pass Variables by Value or by Reference, and How Can This Behavior Be Explained?

Gelagat Lulus JavaScript: Mengikut Nilai atau Rujukan

Dalam JavaScript, konsep lulus mengikut nilai dan rujukan memainkan peranan penting dalam memahami bagaimana pembolehubah dan objek berkelakuan. Walaupun sering dilabel sebagai bahasa "laluan rujukan", kebenarannya agak lebih bernuansa.

Melalui Objek mengikut Nilai

Apabila menghantar objek sebagai hujah kepada fungsi, JavaScript sebenarnya menghantar salinan rujukan kepada objek itu. Ini bermakna bahawa sebarang pengubahsuaian yang dibuat pada objek dalam fungsi akan menjejaskan objek asal. Ini kerana rujukan itu sendiri, bukan kandungan objek, diluluskan oleh nilai.

Mengubah suai Sifat Objek

Walau bagaimanapun, jika anda mengubah suai mana-mana sifat objek yang dihantar kepada sesuatu fungsi, perubahan tersebut akan berterusan di luar skop fungsi. Contohnya, memberikan nilai baharu pada harta atau menambah harta baharu akan menjejaskan objek asal.

Nilai Primitif Melewati Nilai

Berbeza dengan objek, primitif nilai (seperti rentetan, nombor dan boolean) diluluskan oleh nilai. Ini bermakna bahawa sebarang pengubahsuaian kepada nilai ini dalam fungsi tidak akan menjejaskan nilai asal.

Adakah Terdapat Cara untuk Mengawal Gelagat Hantaran?

Dalam JavaScript, terdapat tiada cara yang jelas untuk mengawal sama ada sesuatu itu diluluskan melalui nilai atau rujukan. Walau bagaimanapun, adalah penting untuk memahami tingkah laku lulus asas untuk memastikan pelaksanaan kod yang boleh diramal dan cekap.

Contoh

  • Contoh 1:

    function modifyByRef(obj) {
      obj.value = "Modified";
    }
    
    const obj = { value: "Original" };
    modifyByRef(obj);
    console.log(obj.value); // "Modified"
  • Contoh 2:

    function modifyPrimitive(value) {
      value = "Modified";
    }
    
    let value = "Original";
    modifyPrimitive(value);
    console.log(value); // "Original"

Amalan Terbaik untuk Mencipta Salinan Objek

Untuk mencipta salinan bebas sepenuhnya objek, anda boleh menggunakan Object.assign() atau operator spread (...) bersama-sama dengan pemusnahan.

Kesimpulan

Memahami gelagat lulus JavaScript adalah penting untuk berkesan bekerja dengan pembolehubah dan objek. Walaupun objek diluluskan oleh nilai (sebagai rujukan), pengubahsuaian harta dalam fungsi mempengaruhi objek asal. Nilai primitif, sebaliknya, benar-benar diluluskan oleh nilai. Keupayaan untuk mengenal pasti tingkah laku lulus memastikan ketepatan kod dan hasil yang boleh diramal.

Atas ialah kandungan terperinci Adakah JavaScript Lulus Pembolehubah mengikut Nilai atau Rujukan, dan Bagaimana Tingkah Laku Ini Boleh Diterangkan?. 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