Dalam Javascript, parameter yang diteruskan dapat diubah dalam fungsi, sebagai berikut
Copy kode kodenya sebagai berikut:
fungsi fungsi1(nama) {
nama = 'bunga bakung';
peringatan(nama);
}
func1('jack');//keluaran lily
Mari kita lihat contoh lainnya
Copy kode kodenya sebagai berikut:
fungsi menyenangkan1(n) {
ini.nama = n;
}
fungsi kesenangan2(nama) {
fun1.call(ini,'lily');
peringatan(nama);
}
fun2("mendongkrak");//keluaran "mendongkrak"
Fungsi fun1 ingin mengubah parameter saat memanggil fun2 menjadi "lily", tetapi gagal. Yang muncul tetaplah "jack". Pikirkan alasannya?
Faktanya, fun1 masih memiliki kemampuan untuk mengubah parameter saat memanggil fun2, menggunakan atribut pemanggil
Copy kode kodenya sebagai berikut:
fungsi menyenangkan1() {
argument.callee.caller.arguments[0] = 'lily';
}
fungsi kesenangan2(nama) {
fun1.call(ini,nama);
peringatan(nama);
}
fun2("jack");//keluaran "lily"
Terlihat bahwa tumpukan panggilan fungsi dalam terlihat oleh fungsi luar dan dapat dimodifikasi.