![]() |
![]() ![]() |
![]() |
--Anonymous-- |
![]()
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) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
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:
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:
Ten post edytował trueblue 19.04.2014, 19:09:16 |
|
|
--Anonymous-- |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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ą. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:10 |