Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang mekanisme tugasan Javascript_Pengetahuan asas

Penjelasan terperinci tentang mekanisme tugasan Javascript_Pengetahuan asas

WBOY
WBOYasal
2016-05-16 16:30:451352semak imbas

Hari ini saya menjawab soalan tentang Javascript, yang melibatkan isu tugasan, jadi saya ingin merumuskan soalan ini dengan baik.

Salin kod Kod adalah seperti berikut:

var a = 'ujian';
var b = function() {};
b.a = 'ujian';
perubahan fungsi(m, n) {
m = 'ubah';
n.a = 'ubah';
}
tukar(a, b);

Selepas melaksanakan kod di atas, adakah nilai pembolehubah a dan b akan berubah?

Nilai asal dan rujukan

Dalam artikel sebelumnya, kami memperkenalkan nilai asal dan nilai rujukan merujuk kepada Undefined, Null, Boolean, Number, String, dll. Mereka disimpan dalam tindanan, manakala nilai rujukan disepadukan. daripada Objek dan disimpan di dalam timbunan.
Di sini kita perlu membezakan dengan jelas antara keduanya:

Salin kod Kod adalah seperti berikut:

var a = 'ujian';
var b = Rentetan baharu('ujian');
var A = 'benar';
var B = Boolean baharu('benar');

Untuk empat pembolehubah di atas, a dan A ialah nilai asal, manakala b dan B ialah nilai rujukan.

Mekanisme tugasan

Setelah mengetahui perbezaan antara nilai asal dan nilai rujukan, kami boleh memperkenalkan mekanisme tugasan Javascript secara terperinci:

Dalam Javascript, untuk pembolehubah jenis nilai primitif, setiap tugasan akan menghasilkan salinan, manakala untuk nilai rujukan, seperti namanya, tugasan mengikut titik rujukan kepada memori objek storan yang sama.
Penetapan nilai asal:

Salin kod Kod adalah seperti berikut:

var a = 1;//Nilai asal
var b = a;//Jana salinan kepada pembolehubah b
b = 2;//Ia tiada kaitan dengan a
makluman(a);//output 1

Penugasan nilai rujukan:

Salin kod Kod adalah seperti berikut:

var A= new Object();//Nilai rujukan
A.x = 1;
var B = A; //Rujukan tugasan, menunjuk ke memori yang sama
B.x = 2;//Mengubah suai B akan menjejaskan A
makluman(A.x);//Output 2

Parameter lulus

Sekarang mari kita lihat cara mengendalikan menghantar dua jenis nilai kepada parameter berfungsi.
1. Lulus nilai asal

Salin kod Kod adalah seperti berikut:

var a = 1;
ujian fungsi(m) {
m = 2;
}
ujian(a);
makluman(a);//output 1

Output ialah 1, jadi kita tahu bahawa fungsi hanya melepasi nilai pembolehubah dalam, jadi m dalam badan fungsi mendapat nilai yang diluluskan 1, dan kemudian diberikan nilai 2. Proses ini tidak menjejaskan pembolehubah luaran a.

2. Nilai rujukan lulus

Salin kod Kod adalah seperti berikut:

var A= Objek baharu();
A.x = 1
ujian fungsi(M) {
M.x = 2;
}
ujian(A);
makluman(A.x);//Output 2

Output ialah 2, jadi kita tahu bahawa fungsi itu melepasi alamat pembolehubah, jadi M dalam badan fungsi mendapat alamat yang diluluskan, jadi atribut x diberikan nilai 2 dan juga akan mempengaruhi A menunjuk ke alamat ingatan yang sama.

Ringkasan

Sekarang kembali kepada soalan pembukaan:

Salin kod Kod adalah seperti berikut:

var a = 'ujian';
var b = function() {};
b.a = 'ujian';
perubahan fungsi(m, n) {
m = 'ubah';
n.a = 'ubah';
}
tukar(a, b);

Pembolehubah a ialah nilai asal dan pembolehubah b ialah nilai rujukan Satu ialah nilai dan satu lagi ialah alamat yang dihantar ke dalam badan fungsi Oleh itu, selepas fungsi dijalankan, pembolehubah a tidak akan berubah, tetapi nilai pembolehubah b akan berubah.

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