Jak mogę zadeklarować zmienną globalną w JavaScript?
javascript
global-variables
Tancerz
źródło
źródło
window
jest dostępna tylko w przeglądarkach. Czy możesz edytować swoją odpowiedź, aby działała we wszystkich środowiskach? Zobacz Jak uzyskać obiekt globalny w JavaScript?Jeśli jest to jedyna aplikacja, w której zamierzasz używać tej zmiennej, podejście Felixa jest doskonałe. Jeśli jednak piszesz wtyczkę jQuery, weź pod uwagę "przestrzeń nazw" (szczegóły o cudzysłowach później ...) zmienne i funkcje potrzebne w obiekcie jQuery. Na przykład obecnie pracuję nad wyskakującym menu jQuery, które nazwałem miniMenu. Dlatego zdefiniowałem „przestrzeń nazw”
miniMenu
w jQuery i umieszczam tam wszystko.Powodem, dla którego używam cudzysłowów, kiedy mówię o przestrzeniach nazw javascript, jest to, że tak naprawdę nie są one przestrzeniami nazw w normalnym sensie. Zamiast tego po prostu używam obiektu javascript i umieszczam wszystkie moje funkcje i zmienne jako właściwości tego obiektu.
Ponadto, dla wygody, zwykle dzielę przestrzeń nazw wtyczki na przestrzeń
i
nazw dla rzeczy, które powinny być używane tylko wewnątrz wtyczki, aby ukryć ją przed użytkownikami wtyczki.Tak to działa:
Teraz mogę po prostu zrobić
$.miniMenu.i.globalVar = 3
lub$.miniMenu.i.parseSomeStuff = function(...) {...}
kiedykolwiek muszę coś zapisać globalnie i nadal trzymam to z dala od globalnej przestrzeni nazw.źródło
delete $.miniMenu
.:). Czy to jest w porządku?delete $.miniMenu
.EDYCJA Pytanie dotyczy JavaScript, odpowiedź dotyczy jQuery, co jest błędne. To stara odpowiedź, z czasów, gdy jQuery był szeroko rozpowszechniony.
Zamiast tego zalecam zrozumienie zakresów i zamknięć w JavaScript
Stara, zła odpowiedź: z jQuery możesz to zrobić, bez względu na to, gdzie jest deklaracja:
I będzie dostępny wszędzie. Używam go do robienia szybkich galerii zdjęć, gdy obrazy są rozmieszczone w różnych miejscach, takich jak:
Wskazówka : uruchom cały kod w konsoli na tej stronie ;-)
źródło
$current = 0;
na początku funkcji, późniejsza nie zadziała.Oto podstawowy przykład zmiennej globalnej, do której mają dostęp pozostałe funkcje. Oto przykład dla Ciebie na żywo: http://jsfiddle.net/fxCE9/
Jeśli robisz to w ramach funkcji ready () jquery, upewnij się, że zmienna znajduje się wewnątrz funkcji ready () razem z innymi funkcjami.
źródło
Zadeklaruj zmienną poza funkcjami
źródło
Najlepszym sposobem jest użycie
closures
, ponieważwindow
obiekt jest bardzo, bardzo zaśmiecony właściwościami.HTML
init.js (na podstawie tej odpowiedzi )
script.js
Oto plnkr . Mam nadzieję, że to pomoże!
źródło