Rumah >hujung hadapan web >tutorial js >Whats In The BOX?!: Pembolehubah
Apakah itu pembolehubah? Kebanyakan (terutamanya dokumen web mozilla(MDN)) akan menggambarkannya sebagai "bekas untuk nilai". Kod bernama yang merujuk kepada sebarang jenis atur cara daripada nilai mudah kepada fungsi.
var foo = "I pity the..."; const group =['Rhonda', 'Jamey', 'Kori', 'Greg']; let greed = function (root) { console.log("of all evil"); }
Amalan biasa untuk menerangkan pembolehubah "menjadi seperti kotak kadbod kecil yang anda boleh menyimpan barang.(MDN)" Tanpa kotak tersebut, nilai kita akan kecut dan mati dalam bahang kod, tidak lagi wujud sejurus selepas pelaksanaan. Seperti yang dinyatakan dalam buku besar JavaScript yang Fasih(EJS), pembolehubah perlu "...digunakan serta-merta atau (mereka) akan hilang" dan di sana ialah dua cara untuk mencipta bekas ini untuk ungkapan kekal:
var question; let box; const cat;
var question = true; let box = null; const cat = 4 + 3;
Bacaan = akan sentiasa memberikan apa yang ada di sebelah kirinya nilai apa yang ada di sebelah kanan. Itulah cara kita tahu bahawa tiada apa-apa dalam kotak
Sekarang, seperti mana-mana kotak terbuka, kandungannya boleh beralih pada bila-bila masa yang anda suka. "* Operator = boleh digunakan pada bila-bila masa pada (pembolehubah) sedia ada untuk memutuskan sambungannya daripada nilai semasanya dan memintanya menghala kepada yang baharu:*"(EJS)
let greenLight = false; //*the greenLight box contains the false value* greenLight = true; //*greenLight is now set to the value true*
Nilai palsu digunakan untuk menghuni kotak ini, tetapi dengan satu perubahan mudah, terdapat nilai baharu di dalamnya. Semudah itu!
Okay, rasanya kami telah meneroka dan menghayati konsep bekas, kotak dengan teliti. Sekarang mari kita terokai mengapa ia salah.
Falsafah "bekas" untuk pembolehubah cukup bagus untuk banyak perkara, seperti yang mungkin anda lihat. Namun, pada satu ketika, kotak mula menjadi rumit:
let a = 5; let b = a; a = 7; console.log(b);// 5
Jika kotak b mempunyai kotak a di dalamnya, dan kotak b diisi dengan nilai baharu, bukankah perkara yang sama berlaku untuk a? Maksud saya, dua kotak yang disatukan cenderung mempunyai kandungan yang sama di dalamnya apabila diisi, bukan? Salah. Konsep kotak pembolehubah menjadi mengelirukan apabila anda memikirkan perkara seperti ini, kerana selalunya, pembolehubah tidak benar-benar berkelakuan seperti kotak sama sekali.
Sungguh, dalam kes ini, adalah lebih baik untuk menganggap data itu telah ada selama ini. Pada dasarnya, pembolehubah hanya jenis menjadikan sekeping data itu penting dan boleh diakses. Program ini terapung dalam jangkauan luas techSpace, dan terpulang kepada pembolehubah kami untuk "tangkap dan tahan (mereka)"(EJS). Ia agak pelik pada mulanya, tetapi ia sangat masuk akal apabila anda memikirkannya. JavaScript yang fasih menerangkannya seperti ini:
"Anda harus bayangkan ikatan sebagai sesungut dan bukannya kotak. Ia tidak mengandungi nilai; ia memahaminya—dua ikatan boleh merujuk kepada nilai yang sama. Sesuatu program boleh mengakses hanya nilai yang ia masih mempunyai rujukan. Apabila anda perlu mengingati sesuatu, anda sama ada menumbuhkan sesungut untuk memegangnya atau menyambung semula salah satu sesungut anda yang sedia ada padanya."
Sekarang, attach adalah sedikit menipu di sini, kerana "sesungut" ini hanya "megang" pada nilai yang cukup kecil untuk dipegang (64 bit). Nilai ini dipanggil "Jenis data ringkas"(EJS) dan termasuk Nombor, Rentetan dan boolean. Jika sesuatu nilai itu mudah, sesungut kita akan melilit dan berpegang padanya.. Macam-macam.. Perbuatan yang kita panggil Pass by value(GFG). Saya katakan semacam kerana jika nilai yang dicari sesungut kita cukup mudah, ia tidak akan mengganggu untuk berpegang pada nilai yang sama, ia hanya akan membuat salinan dan menyimpannya untuk dirinya sendiri:
Dalam contoh di atas, sesungut b kami tidak mengganggu 5 yang sama yang dimiliki oleh a, jadi apabila a menukar jalurnya dan 5 itu hilang ke angkasa, b masih ditinggalkan dengan salinan 5 yang pada asalnya dipegangnya. Sekarang mari cuba sesuatu yang berbeza sedikit:
var a = [13, 40, 27]; var b = a; b.push(5, 1)//push is a method that moves these values into the end an array console.log(a);//[13, 40, 27, 5, 1];
This example is a bit more complex. Our complex dataTypes(arrays, objects, functions) are much to big to go around making copies of them to wrap our tentacles around, so what we do is simply point to the original. An act we like to call Pass by reference(GFG). In this example, b can't hold on to its own array, so when it goes through a change, the original array it points to feels that change pass through it.
This was a small introduction to how we name, grasp, point to, and otherwise utilize data for our own brilliant purposes. It's easy to overlook, but without variables, we would all be lost in a sea of code, digital waters all around us, grasping away as digital water falls right through our fingers. Variables are the boats that carry us all to our destination, and I, for one, appreciate the ride.
References by initial
(MDN)
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables
(EJS)
https://eloquentjavascript.net/02_program_structure.html
(GFG)
https://www.geeksforgeeks.org/pass-by-value-and-pass-by-reference-in-javascript/
Atas ialah kandungan terperinci Whats In The BOX?!: Pembolehubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!