Apakah buruk menggunakan variabel global dalam javascript?

"Jangan pernah memasukkan variabel dalam lingkup global" adalah praktik terbaik karena membuat variabel tersebut rapuh. Laman web biasa atau terutama aplikasi web biasa cenderung berisi banyak skrip berbeda dari berbagai sumber, dan berhati-hatilah untuk melacak variabel global Anda sendiri, semua orang yang skripnya Anda rujuk mungkin tidak ikut bermain

Anggap saja seperti vaksin. Jika setiap orang memiliki vaksin, tidak akan ada ancaman, dan jika Anda sendiri yang memiliki vaksin, tidak ada ancaman, tetapi sementara semua orang mencoba untuk divaksinasi, jadi Anda mungkin tidak divaksinasi karena tidak ada orang lain yang menjadi milik Anda.

Ada beberapa kebebasan dengan menggunakan global jika Anda namespace. Root namespace Anda adalah global, tetapi Anda hanya mengizinkan satu variabel root namespace. Itu kompromi yang biasanya diterima oleh komunitas Javascript, terutama jika itu terbatas pada aplikasi Anda

Namespace mungkin terlihat seperti ini

window.MyNamespace = {
    ClassA: function() { },
    NestedNamespace1: {
        ClassB: function() { }
    }
};

Ini menempatkan ClassA dan ClassB di nesting dari namespace MyNamespace

(function() {
    var myClassAInstance = new MyNamespace.ClassA();
    var myClassBInstance = new MyNamesapce.NestedNamespace1.ClassB();
})();
_

Anda juga dapat membangunnya menggunakan fungsi namespace seperti yang saya buat [di sini], yang juga menjelaskan lebih lanjut bagaimana Anda dapat memanfaatkan kesederhanaan namespace

Namun, secara umum, rekomendasinya adalah menggunakan variabel penutupan di mana saja. Ruang nama adalah minimum, tetapi tidak disarankan karena manfaat dari variabel penutupan. Variabel penutupan adalah variabel yang dideklarasikan dalam eksekusi suatu fungsi. Semua file skrip yang Anda tulis harus terkandung dalam suatu fungsi

Variabel adalah placeholder dalam memori yang menyimpan nilai dan hasil perhitungan. Ada lima jenis variabel. konstanta, variabel global, variabel kelas, variabel instan, dan variabel lokal. Setiap tipe variabel memiliki ruang lingkup, penggunaan, dan masa pakai yang berbeda

Dalam tutorial ini, kami akan menjelaskan variabel global

2. Apa Itu Variabel Global?

Variabel global adalah variabel yang dideklarasikan di luar fungsi apa pun dan dapat diakses oleh semua rutinitas dalam program kami. Jadi, cakupannya global. itu diinisialisasi saat kami menjalankan perangkat lunak kami dan bertahan saat program sedang berjalan

Kami kebanyakan mendeklarasikan variabel global di bagian atas file modul. Fungsi apa pun yang kami definisikan di titik mana pun dalam program dapat mengubah variabel global apa pun

Misalnya, dalam cuplikan kode Python berikut, namaperusahaan adalah variabel global

companyName = "My Company"

def printName(): 
    print(companyName)

Fungsi printName() dapat mengakses variabel global companyName meskipun dideklarasikan di luar fungsi

3. Mengapa Kami Menggunakan Variabel Global?

Kita dapat menggunakan variabel global untuk banyak tujuan seperti untuk menyimpan literal konstan karena itu meningkatkan konsistensi program kita

Selanjutnya, karena kita dapat mengakses variabel global dari fungsi apa pun dalam suatu program, kita perlu mendeklarasikannya hanya sekali, yang mempersingkat kode kita

Oleh karena itu, variabel global membuat pengkodean lebih mudah dan mengurangi waktu produksi

4. Apa Masalah Dengan Variabel Global?

Namun, mereka tidak datang tanpa kekurangan

4. 1. Perubahan yang Tidak Disengaja

Masalah utama dengan mereka adalah bahwa setiap perubahan nilai mereka disebarkan ke seluruh program. Perubahan seperti itu sering dilakukan secara tidak sengaja atau merupakan efek samping dari beberapa tindakan lain. Pada gilirannya, hal itu dapat mengakibatkan kesalahan pemrograman halus yang menyebabkan perilaku tidak terduga

Misalnya, katakanlah kita memiliki fungsi storeUsername() yang memperbarui nama pengguna variabel global dan fungsi lain checkAccess() yang menggunakan nama pengguna variabel global untuk memeriksa akses pengguna ke sumber daya. Selanjutnya, katakanlah pengguna memasukkan nama pengguna mereka dalam kumpulan bahasa selain dari yang kita gunakan dan fungsi storeUsername() tidak memeriksanya. Kemudian, kita bisa mendapatkan hasil yang tidak terduga karena checkAccess() mungkin gagal atau tidak

username = "Admin"

def storeUsername(name):
    username = name
def checkAccess(resource):
    if username = 'Admin':
        return True
    else:
        return False

Kami dapat menemukan sangat sulit untuk melacak kesalahan tersebut. Sebaliknya, kita dapat dengan mudah melacak kesalahan serupa yang melibatkan variabel lokal. Ini karena variabel lokal hanya memiliki cakupan lokal

4. 2. Variabel Global Mengurangi Modularitas dan Fleksibilitas

Kami membuat kode kurang modular, kurang fleksibel, dan kurang terukur saat kami menggunakan variabel global

Misalnya, jika dua modul berbagi variabel global, kami tidak dapat memodifikasi salah satunya tanpa mempertimbangkan bagaimana pengaruhnya terhadap yang lain

Selain itu, variabel global sering kali menyembunyikan cacat desain karena memungkinkan kami mengirimkan kode dengan cepat. Oleh karena itu, kami sering tidak melakukan pemeriksaan apa pun pada variabel global, yang dapat menyebabkan banyak kesalahan tak terduga di kemudian hari dalam siklus hidup kode kami

Penskalaan juga dapat menyebabkan perubahan yang tidak diinginkan dalam variabel global yang menimbulkan bug. Karena lingkup global, kita dapat menemukan sangat sulit untuk melacak kembali kesalahan dalam kode. Itu dapat mengakibatkan kebocoran kode, waktu henti, dan hilangnya produktivitas

5. Cara Menghindari Variabel Global

Mari kita periksa beberapa alternatif untuk variabel global

5. 1. Pendekatan Fungsi Lengkap

Alih-alih menggunakan variabel global untuk berbagi data antara fungsi dan pemanggilnya, kita dapat menulis fungsi sehingga mereka menerima semua informasi yang diperlukan pada input dan mengembalikan semua hasilnya ke pemanggil. Dengan begitu, kami menyediakan semua input yang dibutuhkan oleh fungsi untuk dijalankan. Dan tidak ada entitas lain yang dapat mengubah input fungsi ini dengan cara apa pun. Dengan cara ini, kami dapat melacak kesalahan apa pun ke sumbernya

Misalnya, katakanlah kita memiliki variabel global a dan fungsi func1(), func2() dan func3(). Selanjutnya, fungsi func1() dan func2() memperbarui a, dan func3() membagi inputnya dengan itu. Jika salah satu dari dua fungsi sebelumnya menetapkan a ke 0, kami akan mendapatkan kesalahan pembagian dengan nol di func3() tetapi tidak yakin apa penyebabnya

a=1

def func1(x):
    a = x
	
def func2(x):
    a = x

def func3(b):
    return b / a
_

Sebaliknya, jika kita meneruskan semua variabel, termasuk a, sebagai argumen, kita akan tahu bahwa setiap kesalahan pembagian dengan nol disebabkan oleh func3() mendapatkan nol sebagai argumen kedua

def func1(a, x):
    a = x

def func2(a, x):
    a = x

def func3(b, a):
    return b / a

5. 2. Injeksi Ketergantungan

Kami dapat menjembatani ketergantungan apa pun menggunakan input eksplisit ke suatu fungsi. Misalnya, mari pertimbangkan fungsi yang mengirim pesan ke antrean setelah beberapa pemrosesan. Alih-alih menyimpan kredensial antrean sebagai variabel global, kita dapat meneruskannya ke fungsi di input. Dengan begitu, kami memenuhi semua dependensi untuk fungsi ini sebelum dieksekusi sehingga berfungsi persis seperti yang diinginkan

5. 3. Enkapsulasi

Kita harus merangkum data sebanyak mungkin. Itu berarti kita harus mendefinisikan semua atribut yang dibutuhkan kelas di dalam kelas itu dan menggunakan metode eksplisit untuk mengakses atau memodifikasinya

Jika kami menyimpan beberapa data dalam variabel global, kami berisiko mengalami perubahan yang tidak disengaja yang menyebabkan kesalahan yang sulit dilacak

5. 4. Pola Desain Singleton

Selanjutnya, kita dapat menginisialisasi objek hanya sekali dan kemudian menggunakannya hanya dalam konteks. Kita dapat mencapainya dengan menggunakan pola desain tunggal di mana, kita dapat mendeklarasikan kelas tunggal dan memastikan bahwa hanya satu objek yang dibuat dan diinisialisasi satu kali

6. Kesimpulan

Pada artikel ini, kita berbicara tentang variabel global. Kita harus menggunakannya dengan hemat karena mereka dapat menimbulkan bug dan mengurangi modularitas kode kita. Namun, kita dapat dengan aman menggunakan variabel global untuk berbagi konstanta di seluruh fungsi

Penulis Bawah

Jika Anda memiliki pengalaman beberapa tahun dalam Ilmu Komputer atau penelitian, dan Anda tertarik untuk berbagi pengalaman tersebut dengan komunitas, lihat Panduan Kontribusi kami

Apakah buruk menggunakan variabel global?

Menggunakan variabel global menyebabkan penggabungan kode yang sangat erat . Menggunakan variabel global menyebabkan polusi namespace. Hal ini dapat menyebabkan penugasan ulang nilai global yang tidak perlu. Pengujian dalam program menggunakan variabel global bisa sangat menyusahkan karena sulit untuk memisahkannya saat pengujian.

Mengapa kita menghindari variabel global dalam JavaScript?

Masalah dengan variabel global . Misalnya ketika dua bagian aplikasi yang terpisah mendefinisikan variabel global dengan nama yang sama tetapi dengan tujuan yang berbeda. Laman web juga umum menyertakan kode yang tidak ditulis oleh pengembang laman, misalnya. Global variables are easily overwritten by other scripts. For example when two separate parts of an application define global variables with the same name but with different purposes. It's also common for web pages to include code not written by the developers of the page, for example.

Apakah baik mendeklarasikan variabel global?

Variabel global non-const jahat karena nilainya dapat diubah oleh fungsi apa pun . Menggunakan variabel global mengurangi modularitas dan fleksibilitas program. Disarankan untuk tidak menggunakan variabel global dalam program. Alih-alih menggunakan variabel global, gunakan variabel lokal dalam program.

Apa kerugian menggunakan variabel global?

Kerugian menggunakan Variabel Global . Ini dapat menyebabkan masalah Memori Habis. Data dapat dimodifikasi oleh fungsi apa pun. Pernyataan apa pun yang ditulis dalam program dapat mengubah nilai variabel global. Too many variables declared as global, then they remain in the memory till program execution is completed. This can cause of Out of Memory issue. Data can be modified by any function. Any statement written in the program can change the value of the global variable.