HX3 Foren  

  HX3 Foren > Konstruktiv > Software- und Webentwicklung

Software- und Webentwicklung Planung, Programmierung und Administration
UML, JavaScript/DOM, ASP, JSP, PHP, Apache, MySQL, Python, Perl (...)

Thema geschlossen
 
Themen-Optionen Ansicht
Alt 08.11.2005, 21:07   #1 (permalink)
Newbie
 
Benutzerbild von pixelbird
 
Registriert seit: 26.07.2005
Alter: 32
Beiträge: 38
Standard [Javascript] Funktionsaufrufe mit und ohne Klammern () ?

Ich steig grad in "Web2.0" ein und versuch daher, in javascript ein bischen durchzusteigen; bis jetzt hab ich js immer für relativ unnötig im web gehalten, aber wenn mans so schön "unobtrusive" (unaufdringlich) verwendet, isses doch ganz nett

Nunja, ich hab mir 2 Funktionen gebastelt, die einmal ein Popup generieren und zum zweiten zellen einer tabelle mit nem rollover-effekt versehen; was beides auch ganz gut funktioniert (wenn gewünscht geb ich den Code noch dazu).

Meine Frage nun: warum funktioniert folgendes?
Code:
window.onload = init;

function init() {
	doTableRowRollover();
	doWebcamPopup();
}

function doWebcamPopup() {
	[...]
}

function doTableRowRollover() {
	[...]
}
Und folgendes NICHT ???
Code:
window.onload = init();

function init() {
	doTableRowRollover();
	doWebcamPopup();
}
Was ist bei Javascript der große Unterschied zwischen nem Funktionsaufruf mit () und ohne den beiden Klammern?
Mein logisches Verständnis sagt mir ja eher, dass die Klammern hinmüssen... warum also nicht?

Ich hab dann noch ein wenig rumexperimentiert... und siehe da, wenn ich die klammern in der funktion init() weglasse, macht er teilweise auch probleme... Ich verstehs ned

Kann mir jemand erklären, warum dies so ist?
Und: Weis jemand eine Seite wo "die Unterschiede zu php, etc." bzw. einfach die "Besonderheiten" an JS beschrieben sind?
pixelbird ist offline  
Alt 09.11.2005, 21:55   #2 (permalink)
Administrator 10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Atomic
 
Registriert seit: 21.02.2003
Ort: Freiburg im Breisgau
Alter: 32
Beiträge: 5.139
Atomic eine Nachricht über ICQ schicken Atomic eine Nachricht über Skype™ schicken
Standard AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?

JavaScript ist eine sehr komische Sprache, bei der mal Regeln vergeblich sucht.
Und von Browser zu Browser wird es auch anderst verarbeitet.

window.onload => Wenn die aktuelle Seite geladen ist
init => Name einer Funktion

window.onload = init; => Wenn aktuelle Seite geladen ist bitte init() ausführen

Ok das hast du dir bestimmt auch gedacht.
(Haben wir alle gedacht :P )
Aber irgendwo hab ich sowas ähnliches schonmal gesehen, deshalb glaub ich das es auch so ist.

Jedoch verstehe ich genau wie du den Zusammenhang nicht so richtig.
Alles was wir tun ist einer Variable (window.onload) eine Kopie unserer Funktion, oder eine Referenz zu unserer Funktion zu übergeben.
__________________
http://webagentur-walde.de/
Atomic ist offline  
Alt 10.11.2005, 06:42   #3 (permalink)
Newbie
 
Benutzerbild von pixelbird
 
Registriert seit: 26.07.2005
Alter: 32
Beiträge: 38
Standard AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?

hmja, das ist mir eigentlich schon klar...
in gewissem sinne läuft das ja in anderen programmiersprachen genauso: wir weisen einer variable den wert einer funktion zu, d.h. die funktion wird ausgeführt, und der rückgabewert (wenns einen gibt) steht dann in der variable... schön und gut.

Seltsam find ich die Notation... Warum klappts ohne klammern?? In anderen sprachen müssen funktionsaufrufe immer mit klammern angegeben werden. Und warum klappts mit klammern nicht.?
pixelbird ist offline  
Alt 11.11.2005, 12:38   #4 (permalink)
Administrator 10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Atomic
 
Registriert seit: 21.02.2003
Ort: Freiburg im Breisgau
Alter: 32
Beiträge: 5.139
Atomic eine Nachricht über ICQ schicken Atomic eine Nachricht über Skype™ schicken
Standard AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?

Pfuscherei beim Design von JavaScript 1.0
__________________
http://webagentur-walde.de/
Atomic ist offline  
Alt 12.11.2005, 23:29   #5 (permalink)
Newbie
 
Benutzerbild von pixelbird
 
Registriert seit: 26.07.2005
Alter: 32
Beiträge: 38
Standard AW: [Javascript] Funktionsaufrufe mit und ohne Klammern () ?

Zitat von Atomic

Pfuscherei beim Design von JavaScript 1.0

Na du mavhst es dir einfach... ;-)

Nun gut, es funktioniert ja so... (ich hab nur angst, dass es mir andauernd mit javascript wieder so gehen wird )
pixelbird ist offline  
Alt 17.06.2009, 00:23   #6 (permalink)
Newbie
 
Registriert seit: 17.06.2009
Beiträge: 1
Standard

Wenn du einen normalen Funktionsaufruf hast, dann schreibst du folgende Syntax:

variable = funktionsname(param_1, param_2,...);

-->Die Funktion wird durchlaufen und der/die Rückgabewert/e werden an die Variable/Array zurückgegeben, ganz herkömmlich mit Klammern!

Anders sieht es bei Ereignissen aus:
Syntax:

document.eventname = funktionsname;

Aufpassen, die Funktion bekommt das Event zugewiesen, also muss die eigentliche Funktion einen Parameter bekommen, etwa
"funktionsname(Ereignis)"

Als Beispiel habe ich auf selfhtml folgendes gefunen:

<html><head><title>Test</title>
<script type="text/javascript">
function LayerPosition (Ereignis) {
if (document.layers) {
document.layers[0].left = Ereignis.pageX;
document.layers[0].top = Ereignis.pageY;
} else if (document.getElementById) {
document.getElementById("layer").style.left = Ereignis.pageX + "px";
document.getElementById("layer").style.top = Ereignis.pageY + "px";
}
}
document.onmouseup = LayerPosition;
</script>
<style type="text/css">
#layer { position:absolute; top:100px; left:100px; width:100px; height:100px;
background-color:#FFE0FF; border:solid 1px #000000; }
</style>
</head><body>
<div id="layer">Ein Layer</div>
<p>Klicken Sie irgendwo ins Dokument und der Layer folgt der Maus dorthin.</p>
</body></html>




mfg Chris
aschris ist offline  
Alt 18.06.2009, 07:27   #7 (permalink)
His Awesomeness!
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von flickflack
 
Registriert seit: 25.07.2006
Ort: Regnum Borussiae
Beiträge: 9.282
Standard

Ehm der Fred ist 4 Jahre alt, kein Grund solch altes Material wieder nach oben zu holen
flickflack ist offline  
Thema geschlossen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116