
Ketika kita belajar bahasa pemrograman, beberapa konsep dasar muncul, seperti mendeklarasikan variabel, dan mereka sangat sederhana sehingga kita dapat mulai menggunakannya tanpa pengetahuan tentang fungsinya.
Saya tahu apa yang Anda pikirkan: "Mengapa Anda membuang waktu menulis kepada kami tentang ini?"
Karena saya pikir perlu menghabiskan beberapa menit untuk lebih memahami elemen-elemen ini, apa artinya dan bagaimana kita harus menggunakannya. Ini akan membantu Anda menghindari beberapa kesalahan umum dan menulis kode dengan lebih baik.
Pada artikel ini, kami akan fokus pada cara menyimpan data dalam JavaScript.
Var
"Sekali waktu di galaksi jauh ..." satu-satunya pilihan untuk mendefinisikan variabel dalam JavaScript adalah menggunakan kata kunci var, dan itu sudah cukup untuk mengelola data dalam kode. Tetapi dengan diperkenalkannya standar ES6, beberapa keanehan dan kelemahan JS lama menjadi sangat jelas:
- Lingkup: kata kunci var memungkinkan Anda untuk menentukan variabel hanya dalam lingkup global dan lokal (atau dalam lingkup fungsi). Tidak peduli berapa banyak blok kode yang bersarang yang Anda miliki, hanya ada dua kemungkinan ini.
- Konstanta: jika Anda ingin mendefinisikan sesuatu yang tidak akan berubah selama eksekusi kode, Anda hanya dapat mengandalkan akal sehat pengembang. Kita dapat menggunakan beberapa konvensi yang bermanfaat untuk mengklarifikasi makna (misalnya, huruf kapital), tetapi tidak ada yang menjamin bahwa maknanya tidak berubah.
- Overriding Variables: Anda dapat mengulangi deklarasi dari variabel yang sama sebanyak yang Anda inginkan (dalam lingkup yang sama), dan ini sedikit membingungkan jika Anda ingin mempertahankan variabel yang unik.
Definisi
Sebelum memulai dengan hal-hal teknis, mari kita perkenalkan beberapa definisi umum:
Variabel adalah "wadah" di mana data yang dapat digunakan kembali disimpan (sangat sepele).
Identifier adalah nama variabel (juga sangat sepele).
Blok adalah sepotong kode yang dipisahkan oleh sepasang kurung kurawal (
ccskrf ), misalnya: jika, untuk, berfungsi, dan. dll.
Lingkup , menentukan visibilitas variabel dalam kode. Jika Anda memiliki keraguan, tanyakan pada diri sendiri: "Di mana variabel saya terlihat dalam kode?"
CATATAN Tolong jangan membingungkan ruang lingkup dengan konteks eksekusi , yang berbeda.** Konteks (atau konteks eksekusi) ** adalah lingkungan di mana kode JavaScript dieksekusi. Untuk kesederhanaan, kita dapat mengatakan bahwa
konteksnya adalah objek tempat kode tersebut berada, dan
ini adalah kata kunci yang merujuknya. Jadi tanyakan pada diri sendiri: "Apa objek ini merujuk?"
Sekarang anggap pengembang kami sangat bersemangat tentang Star Wars (yang baik), tetapi curiga terhadap standar baru seperti ES6 (yang buruk), meskipun telah ada selama beberapa waktu. Karena itu, ia lebih suka menulis kodenya dengan gaya ES5 lama, dan akan terlihat seperti ini:
console.log("I am a %s", jedi); var jedi = "Ani";
Seperti yang Anda lihat, ada tiga blok kode (termasuk global), tetapi hanya dua cakupan. Ini karena kode di dalam tanda kurung tidak membuat ruang lingkup. Konsol akan mengeluarkan "Saya Darth Vader" dua kali, dan kemudian "Saya Ani" secara global.
Perhatikan juga bahwa variabel yang sama dideklarasikan dua kali berturut-turut di dalam fungsi, dan sekali lagi dalam pernyataan if. Ini berarti bahwa kami memiliki deklarasi variabel yang sama dalam cakupan yang sama tiga kali, yang melempar pengecualian.
Last but not least, output dari log pertama adalah: kita mencetak nilai variabel kita sebelum mendefinisikannya. Ini sepenuhnya legal dengan var dan disebut "mengangkat".
"Pendakian" mengasumsikan bahwa variabel dan fungsi yang dideklarasikan secara fisik dipindahkan ke awal kode Anda. Secara teknis, ada deklarasi variabel dan fungsi yang disimpan dalam memori pada tahap kompilasi, tetapi tetap dalam kode persis di mana Anda menulisnya. Pentingnya lift adalah memungkinkan Anda menggunakan fungsi sebelum mendeklarasikannya dalam kode Anda.
Anda dapat membacanya di
sini .
Dalam contoh kami, deklarasi variabel "jedi" ditempatkan di memori dan diinisialisasi ke nilai default (tidak ditentukan).
Biarkan
Saat ini, pengembang kami memahami bahwa ES6 tidak terlalu buruk, dan ia memutuskan untuk memberi kesempatan:
console.log("I am a %s", jedi); let jedi = "Ani";
Tetapi dia segera menyadari bahwa dia tidak bisa hanya mengubah kata kunci var untuk membiarkan, untuk ini Anda perlu membuat beberapa koreksi:
Naik tidak bekerja dengan cara yang sama:
variabel dimasukkan ke dalam keadaan yang disebut Temporal Dead Zone * * dan tidak diinisialisasi sampai definisi dievaluasi. Dalam contoh kami, ia melempar kesalahan: kesalahan referensi.
pengalihan tugas dilarang, definisi variabel dalam ruang lingkup harus unik. Saat mencoba mendapatkan kesalahan: SyntaxError.
Pernyataan if adalah ruang lingkup blok yang valid, jadi deklarasi jedi di dalamnya unik.
Sekarang kodenya harus seperti ini:
let jedi = "Ani"; console.log("I am a %s", jedi);
Const
Sekarang setelah Anda tahu segalanya tentang let, akan mudah untuk memperkenalkan Anda kepada
const . Pada dasarnya, kita dapat mengatakan bahwa const mirip dengan membiarkan, tetapi Anda tidak dapat menetapkan kembali nilai lain. Anda juga perlu tahu bahwa tugas hanya diperbolehkan selama deklarasi const.
function useTheForce(comeToTheDarkSide) { const jedi = "Yoda"; if (true) { jedi = "Darth Yoda"; console.log("I am %s", jedi);
Misalkan dalam contoh kita, "jedi" adalah konstanta dengan nilai "Yoda", jika kita mencoba mengubah nilai di dalam pernyataan if, itu akan memberi kita kesalahan TypeError, dan ini bisa dimengerti karena Yoda tidak akan pernah bergabung dengan sisi gelap.
Kesimpulan
Ketika tidak mungkin untuk mengekspresikan konsep dalam kata-kata dalam bahasa, konsep baru diperkenalkan untuk mengisi kesenjangan. Ini benar untuk bahasa Inggris (
tautan ), Italia, Esperanto, ewokese (saya kira), dll. Ini bahkan lebih benar untuk bahasa pemrograman seperti JavaScript.
Sekarang Anda tahu bahwa Anda dapat:
- Deklarasikan variabel dalam lingkup blok dan alokasikan memori untuk mereka hanya ketika mengevaluasi blok
- Buat deklarasi variabel tetap unik dalam cakupannya, hindari pengembang yang secara keliru menimpa variabel yang digunakan di bagian lain dari kode (dengan nilai yang berbeda)
- Kita dapat memastikan bahwa variabel yang disimpan di const tidak akan berubah setiap saat.
Kiat terakhir saya adalah menggunakan const sebagai pilihan default Anda. Saat Anda perlu menetapkan ulang variabel, gunakan ** let ** (seperti dalam loop). Dan gunakan var ketika ... tidak, Anda tidak lagi membutuhkan var, sungguh
Terima kasih atas perhatian anda
Pertanyaan Javascript Cepat
Saya di
twitter dan
vk