Pertanyaan Bagaimana cara bersih menghadapi variabel global?


Saya memiliki sejumlah halaman aspx (50+). Saya perlu mendeklarasikan sebuah angka (5-7) variabel global di masing-masing halaman ini. Variabel dalam satu halaman independen dari halaman lain meskipun beberapa mungkin sama.

Saat ini saya menyatakan di bagian atas halaman dan di luar fungsi apa pun.

Haruskah saya pendekatan ini secara berbeda dan apakah ada efek samping dari pendekatan ini?

Jika duplikat persis, tolong beri tahu saya. Terima kasih


32
2018-02-21 08:47


asal


Jawaban:


Ini adalah praktik terbaik untuk tidak mengacaukan ruang lingkup global. Terutama karena kerangka kerja lain atau skrip drop-in dapat mengotori atau menimpa var Anda.

Buat namespace untuk Anda sendiri

http://www.javascripttoolbox.com/bestpractices/#namespace

Lebih lanjut di sini: https://stackoverflow.com/search?q=namespace+javascript+global

Beberapa contoh menggunakan metode pengaturan vars yang berbeda

ProjapatiNS = {}
ProjapatiNS.counter = 0;
ProjapatiNS["page1"] = { "specificForPage1":"This is page 1"}
ProjapatiNS.page2 = { "specificForPage2":"This is page 2", "pagenumber":2}
ProjapatiNS.whatPageAmIOn = function { return location.href.substring(location.href.lastIndexOf('page')+4)}

32
2018-02-21 09:28



Seperti yang dikatakan @mplungjan, praktik terbaik adalah menghindari variabel global sebanyak mungkin.

Karena window bersifat global, Anda dapat mendeklarasikan namespace kapan saja dan dalam fungsi apa pun dengan menggunakan window.NAMESPACE = {};

Kemudian Anda dapat mengakses NAMESPACE secara global dan menetapkan nilai Anda sebagai properti, dari dalam fungsi yang sama atau lainnya:

NAMESPACE = { var1:"value", var2:"value" /* etc */ };

Jika Anda dapat melakukan semua ini dalam file skrip daripada langsung di halaman Anda, maka jauh lebih baik, namun saya kira Anda mungkin tidak memiliki nilai yang tersedia dalam skrip statis.


3
2018-02-21 09:48



Salah satu pendekatannya adalah mendeklarasikan variabel pada "root" level, yaitu, di luar blok kode apa pun sebelum kode JS lain mencoba mengaksesnya.

Anda dapat mengatur variabel global menggunakan window.variablename = value; untuk membuatnya tetap bersih dangkal.


1
2018-02-21 08:59