Variabel global javascript di seluruh modul

Lingkup bisa menjadi salah satu aspek yang lebih membingungkan dalam JavaScript. Lingkup menentukan bagaimana nama variabel dicari. Dalam JavaScript ada cakupan tingkat atas - objek global - dan setiap fungsi mendapatkan cakupannya sendiri, terkadang disebut objek aktivasi. Cakupan ini diatur dalam rantai dengan cakupan fungsi bersarang menggunakan cakupan sekitarnya sebagai induk, dan pencarian nama bergerak naik rantai cakupan dari anak ke induk

Dengan demikian, sebagian besar JavaScript , artinya fungsi dapat mengakses variabel yang ditentukan di sekitarnya. Ini bagus, karena memberi kita penutupan, salah satu hal yang membuat JavaScript hebat

Kelemahan lingkup global dalam JavaScript "standar".

Masalah umum untuk aplikasi berbasis browser adalah objek global, yang merupakan cakupan tingkat atas yang digunakan bersama oleh semua skrip. Jika beberapa skrip dijalankan dalam konteks yang sama, semuanya berjalan dalam cakupan tingkat atas yang sama. Jika mereka mendefinisikan variabel tingkat atas dengan nama yang sama, skrip terakhir menang. Hal ini diilustrasikan dalam diagram berikut

Variabel global javascript di seluruh modul

Untuk mengatasi masalah ini, berbagai solusi telah diadopsi, dari hanya menggunakan satu variabel global menggunakan nama khusus seperti "$" atau "_" untuk menghindari cakupan global secara bersamaan dengan meletakkan semua kode di dalam penutupan

Cakupan global dan modul di Ringo

Ringo memecahkan masalah ini pada tingkat dasar dengan memberikan setiap modul ruang lingkup tingkat atas sendiri untuk dijalankan. Objek global masih ada, tetapi tidak dalam rantai cakupan. Sebaliknya, ini adalah prototipe dari semua cakupan modul, seperti yang diilustrasikan dalam diagram berikut

Variabel global javascript di seluruh modul

Seperti yang bisa dilihat, objek global bukan lagi tempat variabel dialokasikan. Terlepas dari dengan atau tanpa var, variabel tingkat atas akan dibuat dalam cakupan modul itu sendiri. Objek global dengan semua objek standar seperti Object, Array, atau String masih ada, menyediakan lingkungan yang benar-benar kompatibel dengan yang ditemukan di browser

Hai teman-teman, pada artikel hari ini saya ingin berbicara tentang variabel global di Node.js. Artikel ini ditujukan untuk pengembang yang memiliki tingkat keterampilan pemula hingga menengah yang bekerja dengan Node. Jika Anda belum pernah mendengar tentang variabel global atau bekerja dengannya, tidak perlu khawatir. Artikel ini akan membuat Anda siap dan bekerja dalam waktu singkat dengan semua yang perlu Anda ketahui tentang variabel global

Apa itu Variabel Global?

Variabel global sangat mirip, jika tidak identik, dengan variabel biasa. Variabel global dapat diinisialisasi dengan nilai, nilai tersebut dapat diubah, dan bahkan dapat dihapus seperti variabel biasa. Perbedaan antara variabel reguler dan variabel global tergantung pada cakupannya. Saat Anda membuat variabel dalam file JavaScript, variabel tersebut hanya ada dalam cakupan yang dideklarasikan. Sekarang apa yang saya maksud dengan ini?

Pada potongan kode di atas, kita bisa melihat ada dua variabel, fileScope dan localScope. Variabel fileScope_ dapat diubah atau dipanggil dari mana saja di dalam file ini, sedangkan variabel localScope hanya ada di dalam fungsi doSomething(). Saya yakin saat ini Anda bertanya-tanya apa hubungannya dengan variabel global. Ketika kita berbicara tentang variabel global, mereka ada untuk semua file dalam suatu program yang berarti mereka memiliki cakupan global untuk program tersebut

Hal ini dimungkinkan karena program JavaScript berbagi namespace global antara semua file dalam program. Dengan kata lain, bayangkan program Anda adalah file atau wadah raksasa yang telah "mengimpor" semua file JavaScript lainnya. Anda kemudian mendeklarasikan variabel dalam file kontainer besar ini, variabel itu sekarang memiliki cakupan di seluruh program. Jika Anda tidak yakin apa itu namespace atau ingin tahu lebih banyak tentangnya, lihat artikel ini untuk mempelajari lebih lanjut

Cara Mendeklarasikan dan Menggunakan Variabel Global

Sekarang kita memiliki pemahaman yang lebih baik tentang apa itu variabel global di Node, mari kita bicara tentang bagaimana sebenarnya kita menyiapkan dan menggunakan variabel global. Untuk menyiapkan variabel global, kita perlu membuatnya di objek global. Objek global adalah apa yang memberi kita ruang lingkup seluruh proyek, bukan hanya file (modul) tempat variabel dibuat. Pada blok kode di bawah ini, kita membuat variabel global bernama globalString dan kita beri nilai. Selanjutnya, kita ubah nilai globalString, dan terakhir kita atur menjadi undefined

Apa yang belum saya bicarakan adalah cara lain untuk membuat variabel global. Alasan saya mengecualikan ini adalah karena ini bukan cara yang tepat untuk menyiapkan variabel. Jika Anda mendeklarasikan variabel dalam file tanpa menggunakan kata kunci var dan kemudian menetapkan nilai padanya, objek global akan menetapkan properti untuk variabel ini. Proses ini pada dasarnya mengubahnya menjadi variabel yang dapat diakses secara global. Saya sangat menyarankan untuk tidak menggunakan metode ini karena ini bukan cara yang tepat untuk membuat global. Penting juga untuk dicatat bahwa jika Anda menyetel direktif 'use strict' , Node akan menonaktifkan global implisit dan Anda kemungkinan akan berakhir dengan kesalahan saat runtime daripada skrip yang berfungsi

Kasus Penggunaan Praktis untuk Variabel Global

Sekarang, Anda mungkin berpikir pada diri sendiri bahwa Anda ingin pergi dan membuat variabel global sekarang karena Anda tahu lebih banyak tentangnya. Saya akan sangat berhati-hati untuk tidak membuat variabel global karena beberapa alasan yang sangat penting

Alasan pertama adalah ketika Anda membuat variabel global, itu ada sepanjang masa pakai aplikasi. Ketika sebuah variabel bertahan sepanjang masa aplikasi, itu berarti variabel itu ada, di memori, menempati sumber daya saat aplikasi sedang berjalan

Kedua, secara tradisional menggunakan variabel global dapat menyebabkan masalah konkurensi. Jika banyak utas dapat mengakses variabel yang sama dan tidak ada pengubah akses atau failsafes di tempat, itu dapat menyebabkan beberapa masalah serius dari dua utas yang mencoba mengakses dan menggunakan variabel yang sama. Namun, meskipun ini terjadi di bahasa lain, belum tentu demikian untuk Node.js. js karena ini adalah lingkungan single-threaded. Meskipun dimungkinkan untuk mengelompokkan proses Node, tidak ada cara asli untuk berkomunikasi di antara mereka

Alasan terakhir yang akan saya bicarakan adalah bahwa penggunaan global dapat menyebabkan penggabungan implisit antara file atau variabel. Menggabungkan bukanlah hal yang baik dalam hal menulis kode yang bagus. Saat menulis kode, kami ingin memastikan bahwa itu modular dan dapat digunakan kembali sebanyak mungkin, sementara juga memastikan mudah digunakan dan dipahami. Menggabungkan potongan-potongan kode Anda bersama-sama dapat menyebabkan beberapa sakit kepala besar di jalan ketika Anda mencoba untuk men-debug mengapa ada sesuatu yang tidak berfungsi

Jika Anda ingin tahu lebih banyak tentang mengapa global tidak direkomendasikan, Anda dapat melihat artikel hebat ini yang disebut Variabel Global Buruk

Jika Anda merasa bingung dengan tujuan dari variabel global, jangan takut. Kami akan melihat beberapa variabel global yang dibangun ke dalam Node dan mencoba untuk mendapatkan pemahaman yang lebih baik tentang mengapa mereka bersifat global dan bagaimana penggunaannya. Faktanya, Anda mungkin telah menggunakan beberapa dari mereka bahkan tanpa menyadari bahwa mereka adalah objek global

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu

Jika Anda melihat blok kode di atas, Anda mungkin akan melihat setidaknya satu contoh yang pernah Anda gunakan sebelumnya, console.log(). Menurut dokumentasi Node, objek konsol adalah global yang memiliki beberapa metode yang memungkinkan pengembang melakukan hal-hal seperti mencetak log atau kesalahan. Menggali lebih dalam dokumen kita dapat melihat bahwa localScope0 benar-benar merupakan contoh global yang dikonfigurasi untuk menulis ke localScope1 dan localScope2

Ini membawa kita ke pernyataan berikutnya yang Anda lihat di blok kode di atas, objek localScope3. Jika Anda telah membuat build produksi aplikasi Node, kemungkinan besar Anda harus menyetel port untuk variabel lingkungan. Variabel lingkungan localScope_4 adalah bagian dari objek localScope3 yang merupakan global lain. Anda dapat mengakses variabel pada objek localScope_3 dalam file apa pun di proyek Anda karena bersifat global. Jika objek ini bukan global, objek localScope_0 juga tidak akan dapat diakses dari file apa pun, ingat itu benar-benar objek yang merujuk kembali ke objek localScope3

localScope_9 adalah fungsi lain yang mungkin pernah Anda lihat sebelumnya jika Anda memiliki alasan untuk menunda operasi sebelum menjalankannya. fileScope0 dan fileScope1 mirip dengan localScope9 dan keduanya merupakan fungsi global juga. Ketiga fungsi ini adalah bagian dari modul pengatur waktu yang memaparkan API global yang memungkinkan Anda memanggil fungsi-fungsi ini tanpa memerlukan pengatur waktu di file Anda secara eksplisit

Semua kasus penggunaan yang disebutkan di atas dibangun ke dalam Node dan bersifat global karena suatu alasan. Objek localScope_3 bersifat global karena memberikan informasi tentang proses Node yang sedang berjalan dan karenanya harus tersedia dari file apa pun tanpa harus memerlukannya. Hal yang sama dapat dikatakan tentang modul pengatur waktu yang berisi sejumlah fungsi yang penting dan harus dapat diakses di mana saja tanpa harus memerlukannya. Jika Anda ingin mempelajari lebih lanjut tentang objek global yang ada di dalam Node, saya mendorong Anda untuk mengunjungi dokumentasi resmi di Globals

Belajarlah lagi

Ingin mempelajari lebih lanjut tentang dasar-dasar Node. js? . js karena videonya jauh lebih mudah diikuti dan Anda benar-benar dapat membangun aplikasi dunia nyata

Kesimpulan

Saya tahu itu sedikit informasi, jadi terima kasih telah menyampaikannya. Semua informasi di atas ditemukan dalam dokumentasi di situs web Node. Silakan ajukan pertanyaan dan berikan komentar di bagian komentar di bawah ini. Sampai lain kali teman-teman

Apakah variabel global dibagi antar modul?

Bisakah saya memiliki variabel global bersama di berbagai file? . the global variable is unique to its own module.

Bagaimana cara saya berbagi variabel global di seluruh modul?

Kita dapat membuat file konfigurasi & menyimpan seluruh variabel global untuk dibagikan ke seluruh modul atau skrip di dalamnya . Dengan hanya mengimpor config, seluruh variabel global yang ditentukan akan tersedia untuk digunakan di modul lain. Misalnya saya ingin a, b & c untuk berbagi antar modul.

Bagaimana Anda berbagi variabel antar modul?

Cara terbaik untuk berbagi variabel global lintas modul dalam satu program adalah dengan membuat modul konfigurasi . Cukup impor modul konfigurasi di semua modul aplikasi Anda; .

Apakah praktik yang buruk menggunakan variabel global dalam JavaScript?

Hindari global. Variabel global dan nama fungsi adalah ide yang sangat buruk . Alasannya adalah setiap file JavaScript yang disertakan di halaman berjalan dalam cakupan yang sama.