Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] event w js.
--Anonymous--
post
Post #1





Goście







Witam, nie bardzo rozumiem tej składni, która bardzo często przewija się przez wszelkiej maści kursy i porady:

Kod
function test(e) {
e = e || event
}


Mam rozumieć że w przypadku nie istnienia e, przypisany zostanie "event". Jeżeli dobrze rozumuje, to już tego nie ogarniam oO. Przecież jeżeli zadeklarowaliśmy argument e, to przy wywoływaniu funkcji musimy coś mu przypisać, w takim razie cała linia wewnątrz jest bezużyteczna oO. Prosiłbym o rzeczowe wyjaśnienia.
Z góry dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Cytat(-Anonymous- @ 19.04.2014, 19:34:07 ) *
Przecież jeżeli zadeklarowaliśmy argument e, to przy wywoływaniu funkcji musimy coś mu przypisać

Nie musimy.
Możemy wywołać funkcję bez przekazania parametru lub przekazać zmienną o niezdefiniowanej wartości.
W takim przypadku oczywiście sens będzie to miało, jeśli zmienna event będzie zdefiniowana.
Często spotykana konstrukcja to:
  1. zmienna=zmienna||[];

co zapewnia, że w przypadku niezdefiniowanej zmiennej przyjmie postać pustej tablicy (oczywiście założeniem jest, że "zmienna" ma być tablicą), i nie musimy tworzyć warunku:
  1. if(zmienna!==undefined){
  2. //zrób to co trzeba ze zmienną
  3. }


Ten post edytował trueblue 19.04.2014, 19:09:16
Go to the top of the page
+Quote Post
--Anonymous--
post
Post #3





Goście







W takim razie, nasuwa się pytanie. Co można zadeklarować zamiast event, jeżeli takie przykłady są zazwyczaj podawane do poruszania obiektami itd. Nie widzę wtedy sensu takiej gwarancji, ponieważ argument można przypisać przed wywołaniem funkcji i w przypadku używania event nie widzę jakiegoś zamiennika(czegoś innego), który mógłby znajdować się w argumencie e. Jedyną możliwością jak dla mnie jest event i cały skrypt odwołuje się do tego zdarzenia, co oznacza iż cała ta linia nie ma najmniejszego sensu oO.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Taki potworek jest konieczny ponieważ IE obsługiwał zdarzenia inaczej niż pozostałe przeglądarki. Nie przekazywał obiektu zdarzenia jako argumentu funkcji, a tworzył globalną zmienną event z owym obiektem. Przez to kod JS, który miał być kompatybilny ze wszystkim przeglądarkami musiał stosować takie sztuczki. W normalnych przeglądarkach wyrażenie e = e || event; w praktyce przyjmowało postać e = e || undefined, w efekcie czego kończyliśmy na e = e. Zaś w przypadku IE wyrażenie to wyglądało następująco e = undefined || window.event, czyli ostatecznie e = window.event.
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Ja nie widzę sensu wiązania tego przykładu z poruszaniem obiektami, jak i ze zdarzeniami, wyobraź sobie, że te zmienne nazywają się "a" i "b".

Argument funkcji można przypisać przed wywołaniem funkcji, ale jak pisałem wcześniej może się zdarzyć, że będzie miał wartość niezdefiniowaną.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 07:10