JavaScript dianggap sebagai bahasa pass-by-value, tetapi pada saat variabel merujuk ke suatu objek, nilainya menjadi referensi dari objek itu.
Sekarang, mari kita lihat apa itu pass by value dan pass by reference
Dalam pass by value, suatu fungsi dapat dipanggil dengan secara langsung meneruskan nilai variabel sebagai argumen. Jika Anda mengubah argumen di dalam fungsi, itu tidak akan memengaruhi variabel yang diteruskan dari luar fungsi
Karena JavaScript selalu melewati nilai, mengubah nilai variabel tidak akan mengubah primitif yang mendasarinya (angka atau string)
Mari kita tunjukkan dalam contoh di bawah ini
fungsi callByValue(var1, var2) { konsol. log("Panggilan Orang Dalam"); . log("var1 =" + var1 + " var2 =" + var2); . log("Sebelum Memanggil"); . log("var1 =" + var1 + " var2 =" + var2); . log("Setelah Panggilan"); . log("var1 =" + var1 + " var2 =" + var2);
Outputnya adalah sebagai berikut
Before Call by Value Method var1 =100 var2 =200 Inside Call by Value Method var1 =10 var2 =20 After Call by Value Method var1 =100 var2 =200Tetapi jika variabel merujuk ke objek yang menyertakan array, nilainya adalah referensi ke objek tersebut
Pass by value adalah cara pemrograman yang lebih aman, yang mencegah pemrogram menimpa variabel di dalam fungsi. JavaScript dan bahasa pemrograman modern lainnya menggunakannya dalam hal primitif
Dalam referensi lewat, suatu fungsi dapat dipanggil dengan langsung meneruskan referensi/alamat variabel sebagai argumen. Jika Anda mengubah argumen di dalam fungsi, itu akan memengaruhi variabel yang dikirimkan dari luar fungsi
Dalam JavaScript, objek dan larik dilewatkan dengan referensi
Ini sebuah contoh
fungsi callByReference(obj) { konsol. log("Di dalam Panggilan dengan Referensi"); . a = 100; . log(obj); . 1 }; . log("Sebelum Memanggil dengan Referensi"); . log(obj); . log("Setelah Panggilan dengan Referensi"); . log(obj);
Keluaran akan
Before Call by Reference Method {a: 1} Inside Call by Reference Method {a: 100} After Call by Reference Method {a: 100} _Elemen paling sederhana dari bahasa pemrograman disebut primitif. Mereka berbeda dari bahasa ke bahasa tetapi umumnya merupakan nilai abadi yang paling dasar
Tipe data primitif JavaScript berikut diteruskan oleh nilai. string, boolean, angka, null, tidak terdefinisi
Primitif disalin dengan nilainya berarti bahwa variabel dilewatkan diakses oleh nilainya
Primitif tidak dapat diubah, yang berarti nilainya tidak dapat diubah tetapi dapat dipindahkan
Objek dalam JavaScript termasuk dalam tipe referensi
Tidak seperti primitif, ukuran nilai referensi bersifat dinamis;
Objek adalah kumpulan properti yang dapat mereferensikan tipe data apa pun, termasuk objek dan nilai primitif. Anda dapat membuat objek dengan tanda kurung {…} dengan daftar properti
Umumnya, objek melewati hampir semua aspek JavaScript. Oleh karena itu, ini adalah salah satu hal pertama yang harus dipelajari
Salah satu fitur yang paling membingungkan dan menarik dalam pemrograman adalah membedakan apakah suatu variabel dilewatkan oleh Nilai atau dilewatkan oleh Referensi. Namun dalam JavaScript, kita tidak perlu bersusah payah karena satu-satunya konsep Pass by Value yang digunakan. JavaScript Pass by Value adalah fungsi yang dipanggil oleh nilai langsung dari variabel sebagai argumen. Dengan kata lain, perubahan argumen di dalam fungsi tidak akan memengaruhi variabel yang diteruskan dari luar fungsi. JavaScript menjadi Berorientasi Objek yang berarti sebagian besar bagian JavaScript adalah Objek. Jadi inilah konsep Tipe Data juga, tipe data Primitif dan Kompleks juga akan berperan dalam JavaScript Pass by Value
Sintaksis
function functionName(arg1) { // code of the function } // call to the function functionName(arg2);Jadi di sini, functionName adalah fungsi yang memiliki argumennya sendiri, setelah definisi fungsi, kita memanggil functionName menggunakan argumen lain, yang secara otomatis akan menggantikan argumen yang ditentukan
JavaScript akan menyalin nilai variabel yang kita berikan ke fungsi sebagai variabel lokal. Setiap perubahan yang kami lakukan pada variabel lokal di dalam fungsi tidak akan memengaruhi argumen yang diteruskan
Mulai Kursus Pengembangan Perangkat Lunak Gratis Anda
Pengembangan web, bahasa pemrograman, pengujian Perangkat Lunak & lainnya
Kami memiliki 2 tipe data, tipe data Primitif (Tipe data tidak dapat diubah) dan Kompleks
- Tipe Data Primitif. Angka, String, Boolean, tidak terdefinisi, dan NULL
- Tipe Data Kompleks. Objek, fungsi atau larik, dll
Jadi inilah bagian yang menarik adalah, Hanya tipe Primitif yang dapat Dilewati oleh Nilai tetapi bukan tipe Kompleks, yang hanya dapat diteruskan dengan referensi. Secara teknis, Pass by Reference hadir dalam JavaScript. Ketika variabel memegang objek, array fungsi yang merupakan tipe kompleks melewati Referensi muncul di gambar di mana variabel menyimpan referensi atau alamat objek
Paket Pengembangan Perangkat Lunak Semua dalam Satu(600+ Kursus, 50+ proyek)
Harga
Lihat Kursus
600+ Kursus Daring. 50+ proyek. 3000+ Jam. Sertifikat yang Dapat Diverifikasi. Akses Seumur Hidup
4. 6 (86.697 peringkat)
Untuk saat ini, kita tidak perlu mempertimbangkan untuk melewati konsep Referensi dan masuk lebih dalam ke konsep Pass by Value
Contoh untuk Mengimplementasikan JavaScript Pass By Value
Di bawah ini adalah contoh-contoh yang disebutkan
Contoh 1
Kode
<!DOCTYPE html> <html> <body> <script> var employeeName1 = "Jack"; var employeeName2 = employeeName1; employeeName1 = "Jane"; document.write(employeeName1 + "</br>"); document.write(employeeName2); </script> </body> </html>Keluaran
Di sini, ini adalah hasil langsung, kami hanya menggunakan = operator di sini untuk menampilkan konsep nilai yang diteruskan
- employeeName1 dibuat dengan nilai 'Jack'. JS mengalokasikan sebagian memori di sini
- Variabel lain employeeName2 dibuat dan salinan employeeName1 diteruskan ke sana
- Baik employeeName1 dan employeeName2 bersifat independen dan memiliki ruang memori sendiri yang dialokasikan
- Sekarang, employeeName2 juga memiliki nilai 'Jack'. employeeName1 diubah menjadi 'Jane' tetapi employeeName2 akan tetap memiliki nilai asli i. e 'Jack' karena alokasi memori berbeda dan karenanya outputnya
Contoh #2
Kode
<!DOCTYPE html> <html> <body> <script> let x = 10; let samplechange = (value) => { value = 20 } samplechange(x); document.write(x); </script> </body> </html>_Keluaran
Contoh #3
Kode
<!DOCTYPE html> <html> <head> <title>Pass by Value</title> </head> <body> <h2>Pass by Value in JavaScript</h2> <script> var y = 30; function sum(x) { x = x + x; } sum(y); document.write(y); </script> </body> </html>Keluaran
Izinkan saya menjelaskan Cara Kerja Pass by Value dengan contoh di atas,
- Kami mendefinisikan fungsi sum() yang menerima argumen x, fungsi mengubah nilai x menjadi 2 kali x
- Di atas fungsi, kami telah mendeklarasikan dan menginisialisasi variabel y dengan nilai 30
- Setelah isi fungsi, kita meneruskan variabel y ke fungsi sum(). Di sini ketika y diteruskan ke fungsi sum(), JavaScript akan menyalin nilai variabel y ke x
- Pada sum(y), nilai x akan berubah sesuai fungsi yang tertulis, yaitu x + x, jadi nilai y x sekarang menjadi 60
- Tetapi nilai y tidak akan berubah karena x dan y keduanya merupakan variabel yang berbeda
- Jadi saat mencatat output nilai x akan menjadi 60 dan nilai y akan sama dengan 30
- Jika nilai dilewatkan dengan referensi, nilai y akan berubah menjadi 60
Contoh #4
Sebelum callByValue, fungsi Inside dan setelah callByValue mengubah nilai variabel
Kode
<!DOCTYPE html> <html> <head> <title>Pass by Value</title> </head> <body> <h2>Pass by Value in JavaScript</h2> <script> function callValue(var1, var2) { document.write("Inside Call by Value Method"); var1 = "Chaitanya"; var2 = "CPG"; document.write(" var1 = " + var1 +" var2 = " +var2 + "</br>"); } let var1 = "Karthick"; let var2 = "IBM"; document.write("Before Call by Value Method"); document.write(" var1 = " + var1 +" var2 = " +var2 + "</br>"); callValue(var1, var2) document.write("After Call by Value Method"); document.write(" var1 = " + var1 +" var2 = " +var2 + "</br>"); </script> </body> </html>_Keluaran
Contoh #5
Kode
<!DOCTYPE html> <html> <head> <title>Pass by Value</title> </head> <body> <h2>Pass by Value in JavaScript</h2> <script> let var1 = 100; function updateValue(var1){ var1 = var1 * 4; document.write("Updated Value is: ", var1 + "</br>"); } updateValue(var1); document.write("Original Value is: ", var1); </script> </body> </html>Keluaran
Keuntungan dari Pass By Value
Di bawah ini adalah kelebihannya
- Beberapa nilai dapat dikembalikan dari suatu fungsi
- Relatif, eksekusi lebih cepat karena tidak ada salinan argumen yang dibuat
- Untuk menghindari perubahan jika dilakukan tanpa disadari, menggunakan referensi const dan meneruskannya akan membantu kita membatalkan perubahan
- Pass by Value adalah memori yang aman dan efisien
- Nilai argumen yang diteruskan ke fungsi tidak akan berubah
Kesimpulan
Kami telah melihat bagaimana fitur ini bekerja di JavaScript dengan mempertimbangkan tipe data Primitif dan Kompleks. Diilustrasikan dengan beberapa contoh yang akan membantu Anda untuk mengeksplorasi lebih jauh dan juga melihat keuntungan dari Pass by Value. Penjelasan singkat tentang contoh-contoh akan memberi Anda pengetahuan yang baik tentang cara melewati Nilai digunakan. Anda bahkan dapat menjelajahi Pass by Reference dalam JavaScript yang untuk tipe data kompleks
Artikel yang Direkomendasikan
Ini adalah panduan untuk JavaScript Pass By Value. Di sini kita membahas pengantar JavaScript Pass By Value dengan contoh pemrograman. Anda juga dapat membaca artikel terkait lainnya untuk mempelajari lebih lanjut –