2015-06-15 17 views
10

Mam źródło kodu, które zawiera długą nazwę zmiennej (postCustomThumbnailsScrollerHeight).Podaj drugą nazwę zmiennej w javascript

Nie chcę zmieniać nazwy tej zmiennej dla całego źródła kodu, aby łatwo kontynuować projekt, ale aby mieć skrót nazwy. Próbowałem podążać za rozwiązaniem (które działa) przy pierwszej deklaracji zmiennej, ale nie jestem pewien, czy jest to właściwy sposób. Mam inny kolor d w IDE:

var postCustomThumbnailsScrollerHeight= d= $('.post-scroller').outerHeight(); 

szukam tym pytaniem zwykły porady eksperta.

+3

Czy spodziewasz się, że jeśli zmienisz wartość jednej, która zmieni się również druga? –

+2

Spowoduje to utworzenie zmiennej globalnej "d". –

+3

jquery nie ma "referencji". Możesz trywialnie zrobić 'var x = longvarname' i używać' x' wszędzie, ale będzie to DWIE różne zmienne i nie będą one zachowywać wartości innych w synchronizacji –

Odpowiedz

13

Nie, to naprawdę nie jest poprawna: nie jesteś deklarując zmienną d tylko przypisywania z nim, a tym samym

  1. co globalne (który może być lub nie być konieczne)
  2. dokonywania kod niezgodny ze strict mode

Oto rozwiązanie:

var d = $('.post-scroller').outerHeight(), 
    postCustomThumbnailsScrollerHeight = d; 

Należy pamiętać, że należy to robić wyłącznie w przypadku problemów z czytaniem/pisaniem, a nie z pobranym rozmiarem skryptu: do tego ostatniego celu należy użyć minilizerów.

Należy również uważać, aby nie utworzyć aliasu, ale naprawdę dwie zmienne. Jeśli przypiszesz jeden, nie zmienisz drugiego. Trudno dać jednoznacznej porady bez więcej informacji, ale zwykle rozwiązaniem jest mieć przestrzeni nazw obiektu:

Zakładając masz struct

myApp.thumbnailScrollers.postCustom = {height:... 

wtedy po prostu przypisać ten ostatni obiekt do zmiennej lokalnej w moduł lub funkcja:

var s = myApp.thumbnailScrollers.postCustom 

W to przypadek, zmieniając s.height również zmienić myApp.thumbnailScrollers.postCustom.height.

+0

@whitelettersandblankspaces Podejrzewam, że byłbyś zainteresowany modułami i przestrzeniami nazw. Oto początek: http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html –

-2

Czy masz problem z deklaracją var w następnym wierszu? Można po prostu zrobić:

var postCustomThumbnailsScrollerHeight = $('.post-scroller').outerHeight(); 
var d = postCustomThumbnailsScrollerHeight; 
0

Prawdopodobnie masz inny kolor, ponieważ w tym przypadku b to zmienna globalna.

chodzi moim zdaniem będzie lepiej napisać wszystkie definicje na różnych liniach:

var postCustomThumbnailsScrollerHeight = $('.post-scroller').outerHeight(); 
var d = postCustomThumbnailsScrollerHeight; 
+4

Nie daje to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem - zawsze możesz komentować własne posty, a gdy już uzyskasz wystarczającą reputację, będziesz mógł komentować każdy post. – Kmeixner

0

Chociaż JavaScript nie natywnie wspierać referencje, można stymulować je za pomocą kodu, takich jak to:

function d(){ 
    return postCustomThumbnailsScrollerHeight; 
} 

Następnie wystarczy użyć d() wszędzie. Nie jest zbyt elegancka, ale z tego, co wiem, jest to jedyny sposób na uzyskanie referencji w JavaScript.

Powiązane problemy